PowerBI學習 第二階段函數 Divide/If/Switch/Related/Lookupvalue
From:公眾號 PowerBI大師
開啟新的階段。第二階段評為難度最易是因為他們與Excel的函數基本一樣,如果你會用Excel中的If和Vlookup,這些就算不上新的知識,然而這最簡單的往往也是最好用的。
1 Divide 安全除法
這是一個非常常用的函數,原因是我們做數據分析的很多指標都是相對值,環比增長率、利潤率、存貨周轉率、離職率、借款逾期率...它們的數學表達式都是除法計算。當然我們一般可以用運算符「/」來完成,Divide(分子,分母)可謂安全除法,它的好處是可以在分母為零時防止出現報錯信息。比如一個簡單的除法計算,年比年增長率=(當年銷售量-去年銷售量)/去年銷售量,寫兩個公式來對比:由於沒有2014年的數據,2015年的增長率出現了分母為零的情況,報出了Infinity無限大。如果用Divide,則可以返回空。
不要小看了這個空白,PowerBI的圖表與Excel的數據透視表一樣,默認會隱藏那些沒有數據的項目。如果我們分開兩張表做,你會發現帶Divide的年比年增長率會隱藏2015年的報錯數據,這在很多時候是我們非常需要的形式。如果沒有Divide,你可能要繞個彎路,使用IF或IFERROR來達到同樣的效果。
Divide的表達式除了分子和分母,其實還有一個可選項,如果不選則默認返回空。我們也可以特別設定,比如輸入1,則當0是分母時返回1。
自從學會了Divide,我很少使用「/」來做除法題。
2 IF/SWITCH
IF的應用與Excel中的IF基本一樣。此外它同Divide類似,最後一個參數否也是可選項,如果省略的話,則默認返回空。IF公式用起來經常讓人頭疼的地方是當有特別多的條件時,外套套外套。比如我們的區域負責人名單表中有負責人的年齡,可以按照區間做一個年齡段的分層,4個分層就需要4個If嵌套來完成。這個時候Switch很好地解決了去外套的問題。如下圖右,我們用Switch+True的方法來定義不同條件的返回值,明顯使表達式更清晰。
如果是以一個準確值來判斷,Switch的用法還可以直接引用表達式:
DAX針對特別情況設計的高級公式有很多,沒有最好的,只有最適合的。儘管我們學會了Divide和Switch,IF仍然是我們大多時候的選擇,因為他簡單靠譜。例如下面這個形式,無論是在度量值還是在列中,經常會用到。
3 關係函數Related & Relatedtable
談到關係再次把這張模型結構圖拿出來,一目了然我們之前建立的是Lookup表與數據表之間的一對多關係。建立模型其中的一個重要意義就是可以避免扁平化一張表(即把所有的數據整合到一張表裡),避免扁平化是一般理想情況,然而對於一些特別情況需要我們去Vlookup其他表裡的數據時,應該怎麼做?Related這個函數與Excel中的Vlookup功能相似。在咖啡數據表中,如果我們想添加一列獲取杯型表中對應的體積值,只需要關聯你想要的輸出的體積列。是不是很簡單!
反過來,如果我們到一對多的"一"端去Vlookup"多"的一端呢?顯然因為多的一端是多條數據,那麼返回的就不可能是唯一值,而是一張表,所以我們要用Relatedtable來完成。例如到原材料表中添加一個訂單數量列,Relatedtable就會把當前行的咖啡種類關聯的數據表內容抓取出來,Countrows再求得這個關聯表的行數,即訂單的數量。
4 Lookupvalue
在DAX中與Vlookup最相似的函數是Lookupvalue。我不得不提起它,只因為它可以做到多個項目的Vlookup。假定我們有一張按照咖啡種類和杯型定價的價格表,想在數據表中添加一列來得到對應的價格信息。你可以先腦補一下我們在Excel中一般會想到=Vlookup([咖啡種類],』價格表』列1:列3,3,)來求對應咖啡種類的價格,但是如果還要加一個杯型條件就有點麻煩了,可能要用&連接兩個欄位或者使用Index+Match的方法來定位。現在我們有了Lookupvalue就可以做到一步到位,見下圖的公式。Lookupvalue的設計可以使我們更精準地定位搜索的目標,學會了它,我只能無情地說Vlookup是弱爆了:)。
____________________________________推薦閱讀:
※Power BI散點圖支持高密集抽樣
※Power Query中透視逆透視功能的配合使用完成數據清洗整理
※「兩會」勝利閉幕,極客電台從前方為您發來最新報道
※在Power BI 中使用預測功能
※什麼是Power BI
TAG:PowerBI |