Power BI:如何使度量从另一列分组

时间:2016-05-06 20:34:45

标签: powerbi dax powerquery

我刚刚开始使用Power BI,并且在努力解决这个问题时遇到了最令人沮丧的时间。

这是我从Excel文件中提取的数据的一个非常小的示例。不能以任何其他方式得到它。

╔══════════════╦══════════════════╦═══════════════╦═══════════════════════╗ ║ Product Type ║ Product Name ║ Dollar Sales ║ Product Share of Type ║ ╠══════════════╬══════════════════╬═══════════════╬═══════════════════════╣ ║ Bagels ║ Client 1 Bagels ║ $15,521.09 ║ 2.42 ║ ║ Bagels ║ Client 2 Bagels ║ $112,059.11 ║ 17.46 ║ ║ Muffins ║ Client 1 Muffins ║ $141,417.84 ║ 3.25 ║ ║ Muffins ║ Client 2 Muffins ║ $1,483,643.52 ║ 34.11 ║ ║ Muffins ║ Client 3 Muffins ║ $19,008.64 ║ 0.44 ║ ║ Pies ║ Client 2 Pies ║ $1,718,242.24 ║ 43.90 ║ ║ Pies ║ Client 3 Pies ║ $39,883.20 ║ 1.02 ║ ║ Pies ║ Client 4 Pies ║ $282,140.64 ║ 7.21 ║ ╚══════════════╩══════════════════╩═══════════════╩═══════════════════════╝

我没有所有Bagel产品,只有少数几个与我合作的产品。与此数据集中的其他产品相同。

因此,如果我想计算所有Bagel Type产品的总销售额,我可以与我现有的产品非常接近。

我可以通过计算Dollar Sales/(Product Share of Type/100)的列来计算Type的总销售额。示例结果:

╔══════════════╦══════════════════╦════════════════════╗ ║ Product Type ║ Product Name ║ Type Total Dollars ║ ╠══════════════╬══════════════════╬════════════════════╣ ║ Bagels ║ Client 1 Bagels ║ $641,367.36 ║ ║ Bagels ║ Client 2 Bagels ║ $641,804.75 ║ ║ Muffins ║ Client 1 Muffins ║ $4,351,318.15 ║ ║ Muffins ║ Client 2 Muffins ║ $4,349,585.22 ║ ║ Muffins ║ Client 3 Muffins ║ $4,320,145.45 ║ ║ Pies ║ Client 2 Pies ║ $3,913,991.44 ║ ║ Pies ║ Client 3 Pies ║ $3,910,117.65 ║ ║ Pies ║ Client 4 Pies ║ $3,913,185.02 ║ ╚══════════════╩══════════════════╩════════════════════╝

在百吉饼中,我们得到:

  • $ {{{{}}
  • 的总类型美元$ 641,367.36
  • $ {$ 1}}
  • 的总类型美元$ 641,804.75
  • 这给出了437.39美元的非常小的差异。

小差异并不让我担心。

问题是为每一行计算结果(因为我使用了计算列,我不知道另一种方法)。如果我转身想要获得所有类型的美元,那么每个记录的值都会计算在内。根据我的数据集中有多少产品项目,这将是双倍,三倍,四倍等。

对于百吉饼:

  • $ 1,283,172.11总类型美元
  • 这基本上是双重计算

那么如何创建一个考虑另一列的度量呢?

如果我要为产品类型求和(美元销售额)和产品类型的总和(类型的产品份额),它会更准确,我不会重复计算完成的值。

(我不需要将表作为输出,如果我要使用Power PI创建矩阵片,我只需要一个可以给出与最终列相同结果的度量):

Client 1 Bagels

我已尝试过Client 2 Bagels ╔══════════════╦═══════════════════╦════════════════════╦════════════════════╗ ║ Product Type ║ Sum(Dollar Sales) ║ Sum(Share of Type) ║ Type Total Dollars ║ ╠══════════════╬═══════════════════╬════════════════════╬════════════════════╣ ║ Bagels ║ $127,580.20 ║ 19.88 ║ $641,751.51 ║ ║ Muffins ║ $1,644,070.00 ║ 37.80 ║ $4,349,391.53 ║ ║ Pies ║ $2,040,266.08 ║ 52.13 ║ $3,990,535.35 ║ ╚══════════════╩═══════════════════╩════════════════════╩════════════════════╝ ,但在进行最终计算之前,我仍然无法根据产品类型获得小计。

我确实尝试创建一个CALCULATE()值表,但问题是我不能将这些结果与其他结果放在同一个表/图表中,因为过滤器不适用(我基本上都在运行)从这一个数据集/表)。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

TotalSales := CALCULATE(SUM(TableName[Dollar Sales]),
                        All(TableName[Product Name]
                       )

您使用该公式执行的操作忽略了数据透视表在产品名称列上施加的任何过滤器,因此它将为您提供放置在产品名称列中的任何其他字段的总计枢。因此,如果您在行标签中使用产品类型产品名称创建数据透视表,它将按产品类型为您提供总计。

希望这有帮助!