数据透视表分组如何与DAX中的计算过滤器交互?我该如何覆盖它们?

问题描述

我的数据模型中有一个表,其中包含现有产品数量,日期和库存来源表名称。我想创建一个数据透视表,以显示每个来源的总产品计数,但仅显示该表中的最后记录日期。

这是简化版:

FactTable

我有一个采用以下措施的枢轴:

=VAR LastDay = MAX(FactTable[Date]) 
Return 

CALculaTE(
    sum(FactTable[On Hand Quantity]),FILTER(FactTable,FactTable[Date] = LastDay)
)

想法是,它在FactTable中查找最后一个日期,然后过滤该表以仅包括日期等于LastDay的行,然后在数据透视过滤器中提供该商品的现有数量的总和。

类似这样的东西:

enter image description here

这是真正的枢轴(针对特定项目进行了过滤):

pivot table

Manual_Inv中的日期都是旧的,并且不包含LastDay。数据透视表显示源表为Manual_Inv的最大日期的总和(FactTable [现有数量])。不过,更奇怪的是,似乎可以理解它在表中显示的值不是我要的,因此它不包含在总计中。总计是最后一个可用日期的实际总数。

我对数据透视表分组如何与我的DAX代码交互感到非常困惑。据我所知,将透视表组(源表)应用于FactTable,然后在每个组上独立运行DAX代码,并提供结果,就好像每个组都是自己的表一样。然后,它查看结果,检查哪些日期与LastDay相匹配,并且仅将这些值包括在总计中。

有人可以提供一些有关这里发生的情况以及如何解决它的见解吗?我期望的支点看起来与上面相同,但是Manual_Inv的“当前可用”单元格应该为空白。

要离开几天,但我会在可能的时候回复

解决方法

您正在计算的LastDay变量的最大值在本地过滤器上下文中评估 。这意味着对于Manual_Inv,它仅查询Manual_Inv源中的行的最后日期。

要解决此问题,您可以定义LastDay来考虑所有选定内容,而不仅仅是与当前行标签相对应的行。如果不涉及其他任何表(例如,与事实表有关系的日历表),则可以这样写变量:

VAR LastDay = CALCULATE ( MAX ( FactTable[Date] ),ALLSELECTED ( FactTable ) )