編寫DAX代碼進行業務分析時,經常會用到表與表之間的連接配接計算,比如在之前的産品關聯分析一文中(如何用Power BI分析産品關聯度?),需要找出同時購買兩種商品的客戶,就是計算A商品的客戶清單與B商品的客戶清單的交集。
這篇文章再通過客戶清單的示例,介紹如何使用DAX,進行兩個表的各種連接配接計算。
模拟一個簡單的訂單表如下,
通過訂單表可以簡單的計算出購買A的客戶清單,建立表,在編輯框輸入代碼,如圖示:
購買A的客戶也可用下圖清晰展示:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLi0zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwkzX39GZhh2csATMflHLwEzX4xSZz91ZsADMx8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PnVGcq5COmJGOiFGN3QGOlRmZiFWYlljMjFTYjJ2M4MmYhBjY28CXzAzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.jpeg)
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:從一個表中剔除另一個表的資料