美文网首页PowerBI专栏Power BI干货
Power BI如何生成两个表的所有组合

Power BI如何生成两个表的所有组合

作者: PowerBI星球 | 来源:发表于2021-03-08 21:47 被阅读0次

    两个表的所有组合,其实就是笛卡尔积,用Excel都可以完成:

    在Excel中可以利用INDEX函数实现,假如A列是姓,B列是名,那么在C2中输入公式:

    C2=

    INDEX(A:A,INT((ROW(A2)-2)/(COUNTA(B:B)-1))+2)&

    INDEX(B:B,MOD(ROW()-2,COUNTA(B:B)-1)+2)

    然后公式向下填充,就可以在C列生成笛卡尔积。

    在PowerBI中,也有两种方式可以实现,PQ法以及DAX法:

    在Power Query中生成笛卡尔积

    在PQ中相比Excel要简单的多,假如有两个表,'姓'和'名',操作步骤如下,

    ↑添加辅助列,值设置为1(或其他任何值) ↑合并查询-按辅助列-完全外部联结 ↑展开合并查询 ↑合并列

    通过简单的点击操作,就生成了一个笛卡尔积,虽然看起来步骤很多,其实就是秒秒钟的事。

    使用DAX生成笛卡尔积

    依然假设已经有两个表,'姓'和'名',在【建模】选项卡下点击"新表",输入,

    姓名 = GENERATE('姓','名')

    二者逐一匹配的笛卡尔积的结果就出来了,这里GENERATE函数还可以使用CROSSJOIN替代,效果是一样的。

    当然我们并不想要姓和名分开为两列,而是想直接得到姓名合并的结果,可以用ADDCOLUMNS把这两列合并,再利用SELECTCOLUMNS函数提取出需要的列,把公式改为,

    表=SELECTCOLUMNS(ADDCOLUMNS(CROSSJOIN('姓','名'),"姓名",[姓]&[名]),"姓名",[姓名])

    一步实现最终结果,

    以上三种方式操作起来都不难,数据处理虽不是DAX的长处,但也可以简单实现,学会这几个DAX函数,以后在数据分析时可以灵活构建度量。

    当然在Power Query中最简单的,数据处理本来就是PQ的核心功能,这个案例中无需任何代码或者公式,只是通过简单的界面操作,就可以轻松完成。



    -精彩推荐-

    Power BI商业数据分析模型:RFM客户价值分析

    如何用PowerBI 打造高大上的财务报表分析报告?

    Power BI应用技巧:动态显示最近N天的数据

    PowerBI数据分析和可视化实战案例

    采悟 from Power BI 星球

    相关文章

      网友评论

        本文标题:Power BI如何生成两个表的所有组合

        本文链接:https://www.haomeiwen.com/subject/ufpmqltx.html