3.7 ALLSELECTED介紹

第3章 使用基本表函數

3.1 表函數簡介
3.2 EVALUATE語法簡介
3.3 理解FILTER
3.4 ALL和ALLEXCEPT
3.5 了解VALUES,DISTINCT和空行
3.6 將表用作標量值
3.7 ALLSELECTED介紹

ALLSELECTED介紹

屬于基本表函數集的最后一個表函數是 ALLSELECTED。實際上,ALLSELECTED 是一個非常復雜的表函數_——可能是DAX中最復雜的表函數。在第14章中,我們將揭示 ALLSELECTED 的所有秘密 。但是,ALLSELECTED 即使是基本功能也很有用。因此,在本介紹性章節中值得一提。

當檢索表或列的值列表(在當前報表中可見)并考慮當前視圖之外的所有且僅篩選時,ALLSELECTED很有用。要查看 ALLSELECTED 何時用,請查看圖3-17中的報告。

圖3-17 該報告在同一頁面上包含矩陣和切片器

度量值 Sales Pct 的值通過以下表達式計算:

Sales Pct :=
DIVIDE (
    SUMX ( Sales, Sales[Quantity] * Sales[Net Price] ),
    SUMX ( ALL ( Sales ), Sales[Quantity] * Sales[Net Price] )
)

因為分母使用 ALL 函數,所以無論使用什么篩選,它總是計算所有銷售額的總計。因此,如果使用切片器減少顯示的類別數量,則報表仍將針對所有銷售額計算百分比。例如,圖3-18顯示了如果使用切片器選擇某些類別會發生什么。

圖3-18 使用ALL將相對于所有銷售額的總計計算百分比

有些行按預期消失了,但是其余行中報告的數量沒有變化。此外,矩陣的總計不再占100%。如果這不是預期的結果,則意味著您希望只針對所選值而不是總銷售額來計算百分比,那么 ALLSELECTED就變得有用了。

實際上,通過使用 ALLSELECTED 而不是ALL 編寫 Sales Pct 的代碼 ,分母將只需考慮矩陣外的所有篩選來計算所有類別的銷售。換句話說,它返回除 Audio、 Music 、和 TV 之外的所有類別的銷售額。

Sales Pct :=
DIVIDE (
    SUMX ( Sales, Sales[Quantity] * Sales[Net Price] ),
    SUMX ( ALLSELECTED ( Sales ), Sales[Quantity] * Sales[Net Price] )
)

后一版本的結果在圖3-19中可見。

圖3-19 使用 ALLSELECTED,僅考慮外部篩選,針對銷售額計算百分比

現在總數為100%,報告的數字反映了相對于可見總數的百分比,而不是相對于所有銷售額總計的百分比。ALLSELECTED 是強大而有用的函數。不幸的是,為了達到這個目的,它最終也成為了一個極其復雜的函數。只有在本書的稍后部分,我們才能完整地解釋它。由于其復雜性, ALLSELECTED 有時會返回意外結果。出乎意料的是,我們并不是說錯誤,而是即使對于經驗豐富的DAX開發人員也很難理解。

當使用簡單的公式(如我們在此處顯示的公式)時,無論如何,ALLSELECTED 被證明是特別有用的。

結論

正如您在本章中看到的,基本表函數已經非常強大,它們允許您開始創建許多有用的計算。FILTER、ALL、VALUESALLSELECTED 是許多DAX公式中非常常見的函數。

學習如何混合使用表函數來產生您想要的結果是特別重要的,因為它將允許您無縫地實現高級計算。此外,當與 CALCULATE 和上下文轉換混合使用時,表函數會產生緊湊、整潔和強大的計算。在接下來的章節中,我們將介紹計算上下文和CALCULATE 函數。在學習了CALCULATE 之后,您可能會重新閱讀本章,使用表函數作為CALCULATE 的參數,從而充分利用它們的潛力。

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