如何解决如何停止数据透视表过滤突破我的14天滚动平均值衡量标准?
我有两个表:FactTable和Calendar。我的事实表包含各种对象的消耗数据,我想创建一个14天的滚动平均值度量。我取得了一定的成功,但是我注意到,只要某个对象的消耗量为零,那么滚动平均值就在该天显示为零。不为零的值是正确的,但我希望有一个连续的滚动平均值而不是有间隔。
这是我的代码:
=VAR Interval = -14
VAR FilteredDate = LASTDATE(FactTable[Date])
VAR DateRange = DATESINPERIOD(
'Calendar'[DateKey],FilteredDate,Interval,DAY)
VAR ConsumptionTotal = CALCULATE(
SUM( FactTable[Consumption Qty] ),DateRange )
VAR DaysTotal = CALCULATE(
DISTINCTCOUNT('Calendar'[DateKey]),DateRange)
RETURN
ConsumptionTotal / DaysTotal
我认为正在发生的事情是,从对象的数据透视表中进行过滤(上例中为1804)正在阻止DateRange变量将FactTable正确地过滤为我想要的范围内的日期,因为当消耗为零时数量,则不会将完整的日期范围返回给SUM()。
我已经尝试了所有可以想到的方法,但是每当我测试ALL(),ALLSELECTED()等以尝试停止对DateRange的筛选时,都会收到错误消息。我是DAX的新手,所以我确定我缺少一些简单的东西。筛选器的范围令我非常困惑。
解决方法
解决了。
=VAR Interval = -14
VAR FilteredDate = CALCULATE(
LASTDATE(FactTable[Date]),ALL(Index),ISBLANK(FactTable[Consumption Qty]) = FALSE
)
VAR DateRange = DATESINPERIOD(
'Calendar'[DateKey],FilteredDate,Interval,DAY)
VAR ConsumptionTotal = CALCULATE(
SUM( FactTable[Consumption Qty] ),DateRange )
VAR DaysTotal = CALCULATE(
DISTINCTCOUNT('Calendar'[DateKey]),DateRange)
RETURN
ConsumptionTotal / DaysTotal
我学到了宝贵的一课。过滤器上下文在索引表中进行过滤(我之所以最初没有提及,是因为我认为它并不重要)。然后,该过滤器向下传播到FactTable,在那里我尝试删除过滤器。我似乎需要删除要过滤的原始表上的过滤,否则最终将尝试使用已过滤的值。
所做的更改是对FilteredDate变量的更改,在该变量中,我们将ALL(Index)添加到CALCULATE()函数中,以阻止将任何过滤器应用于Index表,在该表中,我们最终获得了FactTable [VPC]列当我们不希望它被过滤时。之后,我可以在FilteredDate变量中添加第二个过滤器,以确保在确定开始每个滚动平均值的第一天时只计算消耗了一些天。
回想起来,我没有做充分说明问题的工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。