Powerbi 在切片器和PARALLELPERIOD中使用不同的列会破坏我的度量
我有一个表,其中包含13个月前月末以及最近一个工作日的数据。我的大多数报告一次只查看一个时段,因此我在每个报告上都有一个切片器,允许用户选择他们想要查看的时段,通常是最近的工作日。每当数据刷新时,我必须手动转到选择了最近工作日的每个切片器,并选择新的最近工作日(遗憾的是,我的组织尚未更新到允许同步切片器的版本)。当我们转向生产和计划刷新时,这将是一个麻烦,因此我添加了第二列“REPORTING_DATE”,它与原始数据_DATE字段相等,但最近的日期被替换为“most recent”,因此任何选中该日期的切片器在刷新后都可以保持其选择 这是我的数据的一个简化示例:Powerbi 在切片器和PARALLELPERIOD中使用不同的列会破坏我的度量,powerbi,Powerbi,我有一个表,其中包含13个月前月末以及最近一个工作日的数据。我的大多数报告一次只查看一个时段,因此我在每个报告上都有一个切片器,允许用户选择他们想要查看的时段,通常是最近的工作日。每当数据刷新时,我必须手动转到选择了最近工作日的每个切片器,并选择新的最近工作日(遗憾的是,我的组织尚未更新到允许同步切片器的版本)。当我们转向生产和计划刷新时,这将是一个麻烦,因此我添加了第二列“REPORTING_DATE”,它与原始数据_DATE字段相等,但最近的日期被替换为“most recent”,因此任何选
DATA_DATE REPORTING_DATE ACCOUNT_NO
7/10/2018 Most Recent 1001
7/10/2018 Most Recent 1002
7/10/2018 Most Recent 1003
7/10/2018 Most Recent 1004
7/10/2018 Most Recent 1005
7/10/2018 Most Recent 1006
7/10/2018 Most Recent 1007
6/30/2018 6/30/2018 1001
6/30/2018 6/30/2018 1002
6/30/2018 6/30/2018 1003
6/30/2018 6/30/2018 1004
6/30/2018 6/30/2018 1005
6/30/2018 6/30/2018 1006
5/31/2018 5/31/2018 1001
5/31/2018 5/31/2018 1002
5/31/2018 5/31/2018 1003
5/31/2018 5/31/2018 1004
我的问题是,当我将切片器更改为使用DATA_DATE而不是REPORTING_DATE时,它会破坏我用于计算每个期间计数变化的度量
Change in Count (Month) = DISTINCTCOUNT(MyData[ACCOUNT_NO])-CALCULATE(DISTINCTCOUNT(MyData[ACOUNT_NO]),PARALLELPERIOD(MyData[DATA_DATE],-1,MONTH))
当我的切片器具有
DATA\u DATE=7/10/2018
时,度量值正确返回1(7月10日的计数为7减去6月30日的计数为6)。当我使用切片器时,REPORTING\u DATE=Most Recent
我得到7,因为DISTINCTCOUNT(MyData[ACOUNT\u NO])
返回7,这是正确的,但是计算(DISTINCTCOUNT(MyData[ACOUNT\u NO]),并行周期(MyData[DATA\u DATE,-1,MONTH))
返回(空白)
。它看起来像是PARALLELPERIOD(MyData[DATA_DATE],-1,MONTH)
返回相同的值2018年6月30日
,无论使用的切片器是什么,所以我对这个问题感到困惑。这不起作用的原因是计算中的PARALLELPERIOD
过滤器只是在替换的上下文过滤器[DATA\u DATE]
列,但切片器过滤仍然有效,因为它位于不同的列上。如果您在[REPORTING\u DATE]
切片器上选择最近的
,您的度量将尝试查找[REPORTING\u DATE]
是最近的
和[DATA\u DATE]的不同计数
位于上个月。由于不存在此类行,因此返回空白
要解决此问题,您可以告诉度量值直接从[REPORTING\u DATE]
切片器忽略筛选,并且只在[DATA\u DATE]
列上使用筛选(该列从切片器间接获取筛选)
这在[DATA\u DATE]
上与切片器一起工作的原因是PARALLELPERIOD
过滤器替代了该列的切片器过滤。在[REPORTING\u DATE]上切片时
,切片器筛选不会被替换,因为您没有在计算
筛选参数中引用该列
如果这仍然没有意义,我建议大家阅读一下计算
函数是如何工作的。DAX的权威指南中有一整章专门介绍这个函数,还有一些网站/博客也有一些不错的阅读资料。效果很好,Alexis。我通常怀疑这个问题是因为这两个过滤器ers被应用,因此没有返回任何行,ALL()将成为解决方案,但我自己还没有找到解决方案的经验。您的解释帮助我认识到CALCULATE()中的“Filter”参数不必只过滤/减少正在处理的数据,还可以做相反的事情(包括更多的数据),这是一个非常有用的启示。不用客气!我现在已经有了很多使用DAX的经验,但这对我来说也不是很明显。我必须玩一玩才能弄清楚。
Change in Count (Month) =
DISTINCTCOUNT(MyData[ACCOUNT_NO]) -
CALCULATE(
DISTINCTCOUNT(MyData[ACOUNT_NO]),
ALL(MyData[REPORTING_DATE]),
PARALLELPERIOD(MyData[DATA_DATE], -1, MONTH))