在 Power BI 中合并表
Combine tables in Power BI
我正在尝试在 Power BI 中合并两个表。
我有以下两个表:
<table border="1">
<tr><th>Id</th><th>Category</th></tr>
<tr><td>1</td><td>A</td></tr>
<tr><td>1</td><td>B</td></tr>
<tr><td>2</td><td>A</td></tr>
<tr><td>3</td><td>B</td></tr>
<tr><td>3</td><td>C</td></tr>
<tr><td>4</td><td>A</td></tr>
</table>
<br>
<br>
<table border="1">
<tr><th>Id</th><th>Value</th></tr>
<tr><td>1</td><td>10</td></tr>
<tr><td>1</td><td>20</td></tr>
<tr><td>3</td><td>10</td></tr>
<tr><td>3</td><td>30</td></tr>
<tr><td>4</td><td>20</td></tr>
<tr><td>4</td><td>30</td></tr>
<tr><td>5</td><td>10</td></tr>
</table>
我需要将它们组合如下:
<table border="1">
<tr><th>Id</th><th>Category</th><th>Value</th></tr>
<tr><td>1</td><td>A</td><th>10</th></tr>
<tr><td>1</td><td>A</td><th>20</th></tr>
<tr><td>1</td><td>B</td><th>10</th></tr>
<tr><td>1</td><td>B</td><th>20</th></tr>
<tr><td>2</td><td>A</td><th>BLANK</th></tr>
<tr><td>3</td><td>B</td><th>10</th></tr>
<tr><td>3</td><td>B</td><th>30</th></tr>
<tr><td>3</td><td>C</td><th>10</th></tr>
<tr><td>3</td><td>C</td><th>30</th></tr>
<tr><td>4</td><td>A</td><th>20</th></tr>
<tr><td>4</td><td>A</td><th>30</th></tr>
<tr><td>5</td><td>BLANK</td><th>10</th></tr>
</table>
如何使用 Power BI 中的 DAX 实现这一点?
(Power Query,不是 DAX 解决方案)
添加空白查询:
= Table.NestedJoin(Table1,{"Id"},Table2,{"Id"},"Table2",JoinKind.FullOuter)
添加转换步骤:
= Table.ExpandTableColumn(Source, "Table2", {"Id", "Value"}, {"Table2.Id", "Value"})
添加步骤:
= Table.AddColumn(#"Expanded Table2", "NewId", each (if [Id] = null then [Table2.Id] else [Id]))
删除列 Id
和 Table2.Id
。
或者,通过 PowerBI Desktop 的 GUI 方法:
- 打开查询编辑器 -> “主页”选项卡
- 合并查询 -> 作为新的
- Select 两个表,突出显示 Id 列,完全外连接
- 展开最后一列。
- 适当地重命名列。
- 使用您选择的方法合并 ID 列。
首先,您需要一个包含两个 table 之间所有 ID 的不同列表。要在 PowerBI 中获取此公式,请单击 'Modeling' -> 'New Table' 并输入此公式。
IDs = DISTINCT(UNION(
SELECTCOLUMNS(Categories, "ID", Categories[Id]),
SELECTCOLUMNS('Values', "ID", 'Values'[Id]))
)
此 table 将有助于在类别 table 和值 table 之间创建多对多关系。
有了这种关系,您可以使用此公式创建另一个新的 table 以获得结果。
Results = SELECTCOLUMNS(NATURALLEFTOUTERJOIN(NATURALLEFTOUTERJOIN(IDs, Categories), 'Values'),
"ID", IDs[ID],
"Category", Categories[Category],
"Value", 'Values'[Value]
)
我正在尝试在 Power BI 中合并两个表。
我有以下两个表:
<table border="1">
<tr><th>Id</th><th>Category</th></tr>
<tr><td>1</td><td>A</td></tr>
<tr><td>1</td><td>B</td></tr>
<tr><td>2</td><td>A</td></tr>
<tr><td>3</td><td>B</td></tr>
<tr><td>3</td><td>C</td></tr>
<tr><td>4</td><td>A</td></tr>
</table>
<br>
<br>
<table border="1">
<tr><th>Id</th><th>Value</th></tr>
<tr><td>1</td><td>10</td></tr>
<tr><td>1</td><td>20</td></tr>
<tr><td>3</td><td>10</td></tr>
<tr><td>3</td><td>30</td></tr>
<tr><td>4</td><td>20</td></tr>
<tr><td>4</td><td>30</td></tr>
<tr><td>5</td><td>10</td></tr>
</table>
我需要将它们组合如下:
<table border="1">
<tr><th>Id</th><th>Category</th><th>Value</th></tr>
<tr><td>1</td><td>A</td><th>10</th></tr>
<tr><td>1</td><td>A</td><th>20</th></tr>
<tr><td>1</td><td>B</td><th>10</th></tr>
<tr><td>1</td><td>B</td><th>20</th></tr>
<tr><td>2</td><td>A</td><th>BLANK</th></tr>
<tr><td>3</td><td>B</td><th>10</th></tr>
<tr><td>3</td><td>B</td><th>30</th></tr>
<tr><td>3</td><td>C</td><th>10</th></tr>
<tr><td>3</td><td>C</td><th>30</th></tr>
<tr><td>4</td><td>A</td><th>20</th></tr>
<tr><td>4</td><td>A</td><th>30</th></tr>
<tr><td>5</td><td>BLANK</td><th>10</th></tr>
</table>
如何使用 Power BI 中的 DAX 实现这一点?
(Power Query,不是 DAX 解决方案)
添加空白查询:
= Table.NestedJoin(Table1,{"Id"},Table2,{"Id"},"Table2",JoinKind.FullOuter)
添加转换步骤:
= Table.ExpandTableColumn(Source, "Table2", {"Id", "Value"}, {"Table2.Id", "Value"})
添加步骤:
= Table.AddColumn(#"Expanded Table2", "NewId", each (if [Id] = null then [Table2.Id] else [Id]))
删除列 Id
和 Table2.Id
。
或者,通过 PowerBI Desktop 的 GUI 方法:
- 打开查询编辑器 -> “主页”选项卡
- 合并查询 -> 作为新的
- Select 两个表,突出显示 Id 列,完全外连接
- 展开最后一列。
- 适当地重命名列。
- 使用您选择的方法合并 ID 列。
首先,您需要一个包含两个 table 之间所有 ID 的不同列表。要在 PowerBI 中获取此公式,请单击 'Modeling' -> 'New Table' 并输入此公式。
IDs = DISTINCT(UNION(
SELECTCOLUMNS(Categories, "ID", Categories[Id]),
SELECTCOLUMNS('Values', "ID", 'Values'[Id]))
)
此 table 将有助于在类别 table 和值 table 之间创建多对多关系。
有了这种关系,您可以使用此公式创建另一个新的 table 以获得结果。
Results = SELECTCOLUMNS(NATURALLEFTOUTERJOIN(NATURALLEFTOUTERJOIN(IDs, Categories), 'Values'),
"ID", IDs[ID],
"Category", Categories[Category],
"Value", 'Values'[Value]
)