認識Power BI中的非活動關係和USERELATIONSHIP函式
經常遇到星友們關於模型的問題:為什麼明明已經建立了關係,但是沒有篩選作用?仔細一看,原來建立的這個關係顯示的是一條虛線。
這篇文章就來介紹一下,為什麼有的關係線是虛線?虛線有什麼作用,以及如何使用這個虛線關係。
在PowerBI中,兩個表之間只能有一個活動關係,活動關係用一條實線顯示,如果打算在這兩個表之間繼續建立更多關係,則會顯示為虛線,即非活動關係,也稱為虛線關係,虛線關係可以有多條,預設不能發生篩選作用。
以一個最常用的場景來理解,假設訂單表中有訂單日期以及發貨日期,利用訂單日期與日期表建立了關係,那麼在分析時,都是以訂單日期為基礎分析的,每天產生了多少訂單,訂單收入是多少等。
但是如果還需要按照發貨日期來分析,比如每天發出的訂單金額是多少?就需要按照發貨日期與日期表中的日期建立關係,在已有一條活動關係的情況下,再建立一條關係就會以虛線顯示,
雙擊該虛線,進入編輯關係視窗,就可以看到左下角的“使此關係可用”的選項是沒有勾選的,
如果你試圖勾選它,系統就會提示你,已經有一條關係存在,不允許再建立活動關係。
對於活動關係,你也可以去掉上圖中的這個勾選,使之變為非活動關係。
繼續回到上面的問題。
因為訂單日期已經與日期表建立了活動關係,求每個訂單日期的訂單收入很簡單,直接寫個度量值就可以了:
收入 = SUM( ‘訂單表’[銷售額] )
但發貨日期與日期表建立的是非活動關係,這個度量值是沒法按照發貨日期來計算的,那麼建立這個關係有什麼用呢,如何按發貨日期,計算每天發貨的訂單收入是多少?
這時候就要用到這個非活動關係,利用DAX函式USERELATIONSHIP來臨時啟用這個虛線關係,按發貨日期的收入度量值可以這樣寫:
收入 按發貨日期= CALCULATE( [收入],
USERELATIONSHIP('日期表'[日期],'訂單表'[發貨日期])
)
USERELATIONSHIP函式是專門用來啟用非活動關係的,它的引數是構成關係的兩列,這兩列的順序無所謂,不影響計算結果,並且USERELATIONSHIP啟用關係的前提是,這兩列已經在模型中建立了非活動關係,否則將會報錯。
USERELATIONSHIP啟用非活動關係後,會自動斷開原有的活動關係,不過關係的啟用以及原有關係的斷開都是臨時的,且只在該表示式內部生效,並不影響模型中的其他計算。
用矩陣顯示這兩個度量值的結果如下:
因為當天的訂單,不一定當天都能發貨,所以,在某個日期或者某個時間段內,按訂單日期的收入與按發貨日期的收入總會有個時間差。
更進一步的,如果想動態的切換按訂單日期的收入、以及按發貨日期的收入,則可以建立個輔助表(Power BI 輔助表製作方式彙總),
並利用這個輔助表中的型別生成切片器,然後寫個度量值來判斷切片器的選項,來返回相應的計算:
然後就可以動態切換了。
透過上面的介紹,是不是理解了非活動關係呢,它與USERELATIONSHIP函式總是同時出現,在不影響原有模型的情況下,靈活的實現另一種關係查詢。在之前介紹的關聯分析中,也用到了非活動關係,可以再看看這篇文章加深理解:
更多推薦
有幫助別忘了點贊哦。
掌握一個技能
專研一個領域
成為更好的自己