在Power BI進行常見的資料表函數,需要佐以純量函數,這樣可以用於導出量值和導出資料行,以便對資料進行過濾、擷取等加工,再進行運算。
【篩選與清除篩選】
要在Power BI中進行條件篩選,用語法結構是:
FILTER (<資料表>,<篩選條件>)
舉例:要從台糖的歷史資料庫中,要計算「"單價"大於50元的包裝價總和」,需要從資料中,篩選出符合條件的資料後再計算。
由於SUMx是純量函數,「逐一筆數進行計算」為其第一個引數,故能替換為任一可回傳資料表的函數。以filter函數進行篩選,符合條件的紀錄會以資料表的形式回傳到SUMx匯合,產生純量值的結果。可以利用導出資料表來檢視函數的計算結果。
另外,搭配邏輯函數、邏輯運算子,使FILTER寫成巢狀結構滿足多個過濾條件的語法,這時的執行順序是由內而外,所以建議將大範圍先放內層,這樣可以提供執行效率:
FILTER(<資料表>,AND(<篩選條件1>,<篩選條件2>))
FILTER(<資料表>,<篩選條件1>&&<篩選條件2>)
FILTER(FILTER(<資料表>,<篩選條件1>,<篩選條件2>)
DAX進行移除篩選的常用函數是All\AllExpect\AllSelected,功能分別如下:
• All:忽略已套用篩選,回傳所有值給資料表,且引數為資料行時,會排除重複。
• AllExcept:意旨除了指定,其餘資料行移除。
• AllSelected:保留來自外部過濾,忽略查詢內的篩選,回傳所有值。
這三種情的語法分別如下:
ALL([<資料表/行>][,<資料行>[,…]]]])
ALLEXCEPT(<資料表>,<資料行>[,<資料行>]]]])
ALLSELECTED([<資料表\行>][,<資料表>[,…]]]])
【排除重複的函數】
前面的ALL函數,在引數為資料行時,會排除重複的資料。此外還有兩個類似效果的和樹可以用。
• VALUES:限制指定既存的資料表。如果參考的資料表以建立關聯,則沒關聯的會產生空白資料。
• DISTINCT:以資料表函數作為引數。
VALUES(<資料表\行>)
DISTINCT(<資料表\行、運算式>)