我对Power BI非常陌生,所以请耐心等待。因此,假设我有3个XML工作表(我的Power BI初始数据源),其中2个是如下的简单表:
表b
和c
代表如上所述的两个XML文件。 File
a
如下:
Software
+
|
| Microsoft
| +
| +--->Windows 10
+-->+
| +--->Windows 7
|
| Google
| +
| +-->Chrome
+-->+
+-->Mail
或采用XML如下:
<?xml version="1.0"?>
<Software Name = "Company Software">
<HeadProduct Name = "Google">
<Product>Chrome</Product>
<Product>Mail</Product>
</HeadProduct>
<HeadProduct Name = "Microsoft">
<Product>Windows 10</Product>
<Product>Windows 7</Product>
</HeadProduct>
</Software>
现在这是我的问题:在我的数据集中,我只有一个 Table a
带嵌套信息,还有几个Tables b, c, d etc.
带映射Table a
中的元素
Microsoft ----> Table b
Chrome ----> Table c
Windows 10 ----> Table d
...
如何在BI中处理和实现这种关系?如果可以的话,可以更改File a
的结构。
谢谢。
答案 0 :(得分:2)
我认为这更像是“两阶段”联接,而不是一对多。
您称为“ b”,“ c”等的文件似乎都具有相同的架构。我的方法是合并(追加)这些数据集,并在每个数据集上添加一列,以将记录标记为需要与任何特定的“ Head Product”结合起来
将“房间”文件添加到单个“房间”表之后,然后在软件表和房间表之间进行合并。
在我看来,这确实代表了多对多联接,除非您真正想要的是笛卡尔联接,否则这很重要。
好的,您要求一些示例。因此,我在上方将您的表格输入到PowerBI。
第一步是获取表B并添加一列,以帮助它与表A中的主产品相关。因此,我编辑查询,转到添加列功能区,如下所示添加自定义列:
对所有“房间”文件执行此操作。如果您不必手动添加此字段,那将是理想的选择。可能是您可以利用文件夹连接器中的文件名,或者如果您拥有生成这些文件的过程,则可以将其添加到列集中。一切由您决定。
查看“查询”区域,然后在最后一个查询下单击鼠标右键。将鼠标悬停在菜单项上以遍历“新建查询”>“合并”>“将查询追加为新建”-您将得到以下结果:
现在返回表A。从“主页”功能区进行“合并查询”。
展开合并的列。
结果: