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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM