8ab6b45ea677b241d931ba5bc1b8a2b0.png

编写DAX代码进行业务分析时,经常会用到表与表之间的连接计算,比如在之前的产品关联分析一文中(如何用Power BI分析产品关联度?),需要找出同时购买两种商品的客户,就是计算A商品的客户列表与B商品的客户列表的交集。

这篇文章再通过客户列表的示例,介绍如何使用DAX,进行两个表的各种连接计算。


模拟一个简单的订单表如下,

888ffb085b8bb00e07439d334a845fa8.png

通过订单表可以简单的计算出购买A的客户列表,新建表,在编辑框输入代码,如图示:

cbc6f2623a63a671889bd88a35bca092.png

购买A的客户也可用下图清晰展示:

3455fffeb42983939170958cdaf30c3e.png

同理,购买B的客户:

2f65227d6aeb3ba83e13636d6031d603.png

下面就以此为基础,来计算A产品的客户与B产品的客户表的各种交叉连接。

01 | 购买A或购买B的客户

2fb8ac8cf72a709b6c539da298297f1d.png
04ac35e7b83a48eaf1cbdb12360d90f1.png

利用UNION函数把A客户表和B客户表简单合并,然后使用DISTINCT函数去重,就得到了购买A或者B的客户列表。

02 | 购买A且购买B的客户

40ad3ba9f4876ada198f965b3b9d60e8.png
f4ca6fb3fc6b3020650cafb83aa5a13d.png

使用NATURALINNERJOIN函数,返回A客户表与B客户表的交集,就是同时购买A和B的客户。

03 | 购买A但未购买B的客户

a10cf82e9b4fc9ee39a390a9502a7d10.png
166955cb52b67fe283dd9656f219f1b9.png

这里用到了EXCEPT函数,该函数返回第一个表中,未出现在第二个表的数据,需要剔除数据时十分有用。

04 | 仅购买A和B其中一种的客户

22c430a4b1845660dab10c2e94b020cf.png
2f3de77f364e09c83e21ca2cd21201e3.png

只购买其中一种商品的客户,实际上是购买A或者B的客户(第一种情形),剔除掉购买A并且购买B的客户(第二种情形),利用第三种情形的EXCEPT函数,轻松得出。

上面的几种方式基本涵盖了两个客户表连接的各种情形,DAX代码好像有点长,不过你也看到了,逻辑都很简单,主要是灵活运用这几个表函数,进行不同的业务逻辑运算。

  • UNION:简单合并表
  • DISTINCT:保留不重复行
  • NATURALINNERJOIN:返回两个表的交集
  • EXCEPT:从一个表中剔除另一个表的数据

我是采悟,PowerBI星球作者,在公众号"PowerBI星球"中回复"PowerBI",获取《七天入门Power BI》电子书,轻松上手Power BI。

the end.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐