https://zhuanlan.zhihu.com/p/67015995

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

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


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

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

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

同理,购买B的客户:

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. UIStackView before iOS9.0
  2. 【leetcode】Flatten Binary Tree to Linked List (middle)
  3. hdu 2202 最大三角形 (凸包)
  4. pythonchallenge(二)
  5. RSA算法详解
  6. ext中嵌入flash
  7. Jquery创建JSON对象
  8. [ An Ac a Day ^_^ ] CodeForces 426C Sereja and Swaps 优先队列
  9. AI应用开发实战 - 从零开始搭建macOS开发环境
  10. Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)
  11. 爱上linux 简单实现移动办公处理环境.
  12. hdu 3746 Cyclic Nacklace(kmp最小循环节)
  13. C语言 结构体中的零长度数组
  14. [daily][centos] redhat增加扩展仓库
  15. Ionic3错误: StaticInjectorError[HttpModule]: NullInjectorError: No provider for HttpModule!
  16. linux系统坏了,进不了登陆界面怎么办?
  17. FileReader & Blob & File
  18. lftp命令
  19. 跟我一起学习ASP.NET 4.5 MVC4.0(五)
  20. CentOS命令行性能检测工具

热门文章

  1. CentOS Linux release 7.7.1908 (Core)--rabbitmq安装
  2. Java收徒,高级架构师关门弟子
  3. uiautomatorviewer 截取手机屏幕报错
  4. ubuntu 显示桌面快捷键
  5. strcmp函数的两种实现
  6. TiDB初探
  7. SpringCloud与Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系
  8. Apollo配置中心的实战
  9. webstorm 调试 typescript
  10. 利用oracle数据库闪回功能将oracle数据库按时间点恢复