DATEADD如何移除日期表其他列筛选?为何无需REMOVEFILTERS?
DATEADD为啥不用额外移除筛选就能正常工作?
你的场景回顾
- 表格视觉对象包含
Year、Month、TotalCases三列 - 写的度量公式:
Test = CALCULATE(SUM(FACTSALES['TOTALCASES']), DATEADD(DATETBL['date'], -1, Month))
- 已禁用自动日期时间,日期表未标记为日期表(因为包含多客户日历数据)
核心原因:DATEADD本身就会替换原日期筛选
当你的表格用Year和Month做筛选时,本质是给DATETBL['date']加了一个范围筛选(比如选中2023年10月,就相当于筛选出该月所有日期)。
DATEADD的逻辑是接收当前上下文里的日期筛选范围,对范围内的每个日期做偏移计算,生成一个全新的日期范围——比如把2023年10月的所有日期往前推1个月,得到2023年9月的所有日期。
而CALCULATE会自动用这个新生成的日期范围,替换掉原来Year和Month对应的日期筛选条件,根本不需要额外加REMOVEFILTERS(DATETBL)来清除原筛选。
补充:未标记日期表也生效的原因
虽然你的日期表没标记为日期表,但只要DATETBL['date']和FACTSALES里的日期列有正确的关联关系,DATEADD依然能正常工作。它的计算基于当前筛选的日期值集合,不是必须依赖日期表的标记属性。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

