查找按未包含在过滤器上下文中的维度分组的总和的平均值
Find the Average of the Sums grouped by dimensions not included in Filter Context
以下是我面临的现实问题的简化示例:假设我有一个销售事实 table,其中包含度量计数,维度为供应商、客户和零件。我想获得零件销售计数总和的最小值、最大值和平均值,但仅限于相关客户和供应商的组合。
这是销售 table 和预期结果
的示例
销售额Table
+---------+-----------+-------------+-------+
| PartKey | VendorKey | CustomerKey | Count |
+---------+-----------+-------------+-------+
| 1 | a | Z | 10 |
| 1 | b | Z | 20 |
| 2 | a | Y | 30 |
| 2 | a | Y | 40 |
| 2 | b | Z | 50 |
+---------+-----------+-------------+-------+
结果
- PartKey 1 - 最小值:10 (a,Z),最大值:20 (b,Z),平均值:15
- PartKey 2 - 最小值:50 (b,Z),最大值:70 (a,Y => 30 + 40),平均值:60
所以我想以某种方式创建的度量必须从按 VendorKey、CustomerKey 和 PartKey 分组的数据中获取结果(尽管 PartKey 将在过滤器上下文中),但我不知道如何指定一种分组。
此处的关键是创建一个摘要 table,在其中删除筛选器上下文,然后 min/max/avg 使用该 table。下面的 Summary
table 重新创建了您显示的数据 table,除了两个 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
,那么您将获得指定的最小值和最大值。
以下是我面临的现实问题的简化示例:假设我有一个销售事实 table,其中包含度量计数,维度为供应商、客户和零件。我想获得零件销售计数总和的最小值、最大值和平均值,但仅限于相关客户和供应商的组合。
这是销售 table 和预期结果
的示例销售额Table
+---------+-----------+-------------+-------+
| PartKey | VendorKey | CustomerKey | Count |
+---------+-----------+-------------+-------+
| 1 | a | Z | 10 |
| 1 | b | Z | 20 |
| 2 | a | Y | 30 |
| 2 | a | Y | 40 |
| 2 | b | Z | 50 |
+---------+-----------+-------------+-------+
结果
- PartKey 1 - 最小值:10 (a,Z),最大值:20 (b,Z),平均值:15
- PartKey 2 - 最小值:50 (b,Z),最大值:70 (a,Y => 30 + 40),平均值:60
所以我想以某种方式创建的度量必须从按 VendorKey、CustomerKey 和 PartKey 分组的数据中获取结果(尽管 PartKey 将在过滤器上下文中),但我不知道如何指定一种分组。
此处的关键是创建一个摘要 table,在其中删除筛选器上下文,然后 min/max/avg 使用该 table。下面的 Summary
table 重新创建了您显示的数据 table,除了两个 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
,那么您将获得指定的最小值和最大值。