編寫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:從一個表中剔除另一個表的數據

如果你剛開始接觸Power BI,可在微信公眾號後台回復"PowerBI",獲取《七天入門PowerBI》電子書,幫你輕鬆學習、快速入門。

推薦閱讀:

相关文章