DAX日期筛选失效问题:两个度量值结果异常一致
分析你的DAX度量值问题
首先看一下你的两个度量值,结果相同的原因大概率出在Candidate CY里的DATESBETWEEN筛选条件上,我来给你拆解下:
可能的问题根源
- 你用到的
[Początek]和[Koniec]这两个度量值(或计算列)如果没有正确定义为今年的起止日期,比如返回的是整个数据集的时间范围,那这个筛选等于没加,自然和原Candidate的结果完全一致。 - 另外,
DATESBETWEEN的使用需要确保上下文是正确的日期上下文,如果你的模型里没有专门的日期表,直接用事实表的日期列可能会出现筛选不生效的情况。
修正方案
方案1:用时间智能函数DATESYTD直接筛选今年至今的登录客户
如果你的需求是统计**当前年份内(从年初到当前日期)**有登录记录的客户数,直接用DATESYTD更简洁可靠:
Candidate CY = CALCULATE( [Candidate], DATESYTD('WSF - Hurtownia'[Data zapisu]) )
方案2:直接筛选年份等于当前年份
如果你需要统计整个自然年(1月1日到12月31日)的登录客户,不管当前日期,也可以直接筛选年份:
Candidate CY = CALCULATE( [Candidate], YEAR('WSF - Hurtownia'[Data zapisu]) = YEAR(TODAY()) )
方案3:确保[Początek]和[Koniec]的定义正确
如果你坚持想用DATESBETWEEN,那先把这两个起止日期的度量值定义正确:
Początek = DATE(YEAR(TODAY()), 1, 1) // 今年1月1日 Koniec = DATE(YEAR(TODAY()), 12, 31) // 今年12月31日
这样DATESBETWEEN才能正确筛选出今年的日期范围。
额外提醒
要确认'WSF - Hurtownia'[Data zapisu]列的类型是日期/时间,如果是文本类型,时间智能函数和日期筛选都会失效,记得先把列类型转换成日期哦。
内容的提问来源于stack exchange,提问作者Uzzy




