天天看點

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握

 ​

編寫DAX代碼進行業務分析時,經常會用到表與表之間的連接配接計算,比如在之前的産品關聯分析一文中(如何用Power BI分析産品關聯度?),需要找出同時購買兩種商品的客戶,就是計算A商品的客戶清單與B商品的客戶清單的交集。

這篇文章再通過客戶清單的示例,介紹如何使用DAX,進行兩個表的各種連接配接計算。

模拟一個簡單的訂單表如下,

通過訂單表可以簡單的計算出購買A的客戶清單,建立表,在編輯框輸入代碼,如圖示:

購買A的客戶也可用下圖清晰展示:

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握
同理,購買B的客戶:
資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握
下面就以此為基礎,來計算A産品的客戶與B産品的客戶表的各種交叉連接配接。

01 | 購買A或購買B的客戶

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握
資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握

利用UNION函數把A客戶表和B客戶表簡單合并,然後使用DISTINCT函數去重,就得到了購買A或者B的客戶清單。

02 | 購買A且購買B的客戶

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握
資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握

使用NATURALINNERJOIN函數,傳回A客戶表與B客戶表的交集,就是同時購買A和B的客戶。

03 | 購買A但未購買B的客戶

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握

這裡用到了EXCEPT函數,該函數傳回第一個表中,未出現在第二個表的資料,需要剔除資料時十分有用。

04 | 僅購買A和B其中一種的客戶

資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握
資料可視化之DAX篇(二十一)連接配接表的幾個DAX函數,一次全掌握

隻購買其中一種商品的客戶,實際上是購買A或者B的客戶(第一種情形),剔除掉購買A并且購買B的客戶(第二種情形),利用第三種情形的EXCEPT函數,輕松得出。

上面的幾種方式基本涵蓋了兩個客戶表連接配接的各種情形,DAX代碼好像有點長,不過你也看到了,邏輯都很簡單,主要是靈活運用這幾個表函數,進行不同的業務邏輯運算。

  • UNION:簡單合并表
  • DISTINCT:保留不重複行
  • NATURALINNERJOIN:傳回兩個表的交集
  • EXCEPT:從一個表中剔除另一個表的資料