Power BI Desktop 中的转换

Transformation in Power BI Desktop

一个 table 掷出像这样的骰子:

Day   Throw 1   Throw  2
1     1         3
2     3         2
3     6         6

必须改成这样table:

Day   1   2   3   4   5   6
1     1       1
2         1   1
3                         2

因此,我希望在列中显示所有可能的结果,而不是记录每天的个别抛出次数,这样我就可以读取该数字的出现次数。 (投掷顺序可以忽略。)

我知道我可以在 SQL 服务器 ETL 过程中执行此操作,但我想知道我是否可以在 Power BI Desktop 中完成此操作?

此转换的目的是获得一种报告特定日期范围内特定骰子掷出次数的高效方法。也许没有这样的转换就可以得到报告?

步骤 1

除了上面的 table 之外,您还需要一个 table 代表每个可能的掷骰。 (如果数字 1-6 已经出现在您的结果中,这可能不是必需的,但由于您的示例没有反映出这一点,我假设不能假设)

Die
---
1
2
3
4
5
6

步骤 2

将两个 table 都加载到 Power BI Desktop 中。 Die table 无需修改即可加载。上面的结果 table(我将其称为 "Throws")需要进行逆透视。单击 "Edit Query" 并突出显示 Throw 1 & Throw 2 列,然后单击 Transform > Unpivot Columns > Unpivot Columns。重命名非透视列。我结束了:

Day | Throw   | Result
--------------------
1   | Throw 1 | 1
1   | Throw 2 | 3
2   | Throw 1 | 3
... | ....... | ...

步骤 3

将 2 table 加载到您的数据模型后,将它们相互关联(die 列与结果列)。

步骤 4

创建新度量:

Count of Result = COUNT(Throws[Result])

假设您的 table 称为 Throws,结果列称为 Result

步骤 5

在您的 canvas 上,选择矩阵视觉对象。使用 Count of Result 作为您的值,使用 Die 作为您的列,并使用 Day 作为您的行。然后,在右侧,单击 Die 和 select Show items with no data 旁边的小向下箭头,从您的示例中获取数字 4 和 5 以显示向上,即使它们没有被抛出。您现在应该得到一个反映您想要的结果的结果(带有总计)。


希望对您有所帮助!