Ssas 查找按未包含在筛选器上下文中的维度分组的总和的平均值

Ssas 查找按未包含在筛选器上下文中的维度分组的总和的平均值,ssas,dax,Ssas,Dax,下面是我面临的一个现实问题的简化示例:假设我有一个包含度量值计数的销售事实表,其中包含供应商、客户和零件的维度。我想得到零件销售数量总和的最小值、最大值和平均值,但受相关客户和供应商组合的限制 下面是销售表和预期结果的示例 销售表 结果 零件代号1-最小值:10(a,Z),最大值:20(b,Z),平均值:15 零件键2-最小值:50(b,Z),最大值:70(a,Y=>30+40),平均值:60 因此,我想要创建的度量值必须从按VendorKey、CustomerKey和PartKey分组的数

下面是我面临的一个现实问题的简化示例:假设我有一个包含度量值计数的销售事实表,其中包含供应商、客户和零件的维度。我想得到零件销售数量总和的最小值、最大值和平均值,但受相关客户和供应商组合的限制

下面是销售表和预期结果的示例

销售表 结果
  • 零件代号1-最小值:10(a,Z),最大值:20(b,Z),平均值:15
  • 零件键2-最小值:50(b,Z),最大值:70(a,Y=>30+40),平均值:60

因此,我想要创建的度量值必须从按VendorKey、CustomerKey和PartKey分组的数据中获得结果(尽管PartKey将在过滤器上下文中),但是我不知道如何指定这种分组。

这里的关键是创建一个摘要表,在其中删除过滤器上下文,然后使用该表进行最小/最大/平均。下面的
摘要
表重新创建了您显示的数据表,但两个
2,a,Y
行已聚合

AvgSum =
VAR Summary =
    SUMMARIZE (
        ALL(Table1),
        Table1[PartKey],
        Table1[VendorKey],
        Table1[CustomerKey],
        "Cnt", SUM ( Table1[Count] )
    )
RETURN
    AVERAGEX (
        FILTER (
            Summary,
            Table1[PartKey] = MAX ( Table1[PartKey] )
        ),
        [Cnt]
    )

请注意,如果您将上面的
AVERAGEX
替换为
MINX
MAXX
,那么您将获得指定的最小值和最大值。

谢谢您的回答。我会删除
ALL
,只保留表1:我知道这在问题中并不明显,但我不想丢失表上的任何过滤器,即使它是分组列之一。它的工作原理与我期望的一样,将
ALL
取出。好的。另一个有价值的选项是根据您的具体操作而定的
ALLSELECTED
,但它不需要修改,非常好!
AvgSum =
VAR Summary =
    SUMMARIZE (
        ALL(Table1),
        Table1[PartKey],
        Table1[VendorKey],
        Table1[CustomerKey],
        "Cnt", SUM ( Table1[Count] )
    )
RETURN
    AVERAGEX (
        FILTER (
            Summary,
            Table1[PartKey] = MAX ( Table1[PartKey] )
        ),
        [Cnt]
    )