擴展表——ALL與ALLEXCEPT

——PowerBI最難理解的地方是什么?

——白茶覺得是上下文。

日常生活中,學會使用DAX之后,我們已經習慣使用DAX函數來靈活的展示各種業務需要的KPI。

可是在構建函數的過程中,我們經常寫著寫著上下文就會被搞暈。

什么時候清除全部的上下文?什么時候清除部分上下文?擴展表在這里面有什么用?這些都是我們日常使用中需要注意的問題,一個細節疏忽了,就可能導致我們整體的思路崩塌掉。

  • 理解什么是擴展表

擴展表理論,說的通俗一點,其實就是維度表與事實表的術語描述。

模型關系中,我們最常使用的模型關系就是“一對多”。(即One To Many)

站在Many這一端,所有的One都是衍生出來的擴展表。

也就是從事實表往回推,所有的維度表其實都是事實表的擴展表。

舉個例子:

在上圖的模型關系中,Model-Factsales、Model-Factstock、Model-Facttask這三張表作為事實表存在,那么其他所有對應的維度表都是這三張事實表的擴展表。

原生列與相關列:

原生列,即事實表與維度表之間的主鍵列。

相關列,事實表中原本不存在的列,可通過主鍵與事實表建立關系的列。

舉個例子:

在上述模型關系中,銷售明細作為事實表存在,產品表和日期表作為維度表存在。

'銷售明細'[商品名稱]——'產品表'[商品名稱]

'銷售明細'[銷售日期]——'日期表'[Date]

上述的四列就是原生列。

'產品表'[銷售價]或者'日期表'[年度月份]

這種事實表原來沒有的,但是可以通過主鍵與事實表建立關系的,即為相關列。


  • 擴展表與RELATED函數。

RELATED函數,通常可以作為返回模型關系中的相關列使用。

例如:

事實表中只有銷售數量,我想計算該商品的總銷售金額,即可使用RELATED函數返回維度表中相關的[單價]列。

傳送門:

函數周期表丨篩選丨值&表丨RELATED系列


  • 擴展表對于DAX還有什么影響呢?

ALL函數,是我們使用頻率非常高的一個函數,我們經常需要使用ALL來清除整個表的上下文篩選或者某一列的篩選。

ALLEXCEPT函數,可以保留某一列篩選。

嚴格來說,ALL+VALUES與ALLEXCEPT的作用有些時候是差不多的,但是區別點在哪里?

舉個例子:

ALLEXCEPT函數參數可以使用相關列。

如圖所示,這里就使用了[商品名稱]這一相關列。

那么還有哪些點也是需要我們注意的呢?

使用細則:

  • 一般情況下,不要ALL整個事實表

  • 能ALL具體的列,就不要ALL整個表

  • 如果表格列穩定,多個ALL好過ALLEXCEPT

  • 如果表格列經常變動,ALLEXCEPT是最佳選擇

傳送門:

函數周期表丨篩選丨表丨ALL

函數周期表丨篩選丨表丨ALLEXCEPT

小伙伴們?GET了么?

白茶會不定期的分享一些函數卡片

(文件在知識星球[PowerBI丨需求圈])

這里是白茶,一個PowerBI的初學者。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容