您當前的位置:首頁 > 曲藝

認識Power BI中的非活動關係和USERELATIONSHIP函式

作者:由 採悟 發表于 曲藝時間:2020-09-16

經常遇到星友們關於模型的問題:為什麼明明已經建立了關係,但是沒有篩選作用?仔細一看,原來建立的這個關係顯示的是一條虛線。

這篇文章就來介紹一下,為什麼有的關係線是虛線?虛線有什麼作用,以及如何使用這個虛線關係。

在PowerBI中,兩個表之間只能有一個活動關係,活動關係用一條實線顯示,如果打算在這兩個表之間繼續建立更多關係,則會顯示為虛線,即非活動關係,也稱為虛線關係,虛線關係可以有多條,預設不能發生篩選作用。

以一個最常用的場景來理解,假設訂單表中有訂單日期以及發貨日期,利用訂單日期與日期表建立了關係,那麼在分析時,都是以訂單日期為基礎分析的,每天產生了多少訂單,訂單收入是多少等。

但是如果還需要按照發貨日期來分析,比如每天發出的訂單金額是多少?就需要按照發貨日期與日期表中的日期建立關係,在已有一條活動關係的情況下,再建立一條關係就會以虛線顯示,

認識Power BI中的非活動關係和USERELATIONSHIP函式

雙擊該虛線,進入編輯關係視窗,就可以看到左下角的“使此關係可用”的選項是沒有勾選的,

認識Power BI中的非活動關係和USERELATIONSHIP函式

如果你試圖勾選它,系統就會提示你,已經有一條關係存在,不允許再建立活動關係。

對於活動關係,你也可以去掉上圖中的這個勾選,使之變為非活動關係。

繼續回到上面的問題。

因為訂單日期已經與日期表建立了活動關係,求每個訂單日期的訂單收入很簡單,直接寫個度量值就可以了:

收入 = SUM( ‘訂單表’[銷售額] )

但發貨日期與日期表建立的是非活動關係,這個度量值是沒法按照發貨日期來計算的,那麼建立這個關係有什麼用呢,如何按發貨日期,計算每天發貨的訂單收入是多少?

這時候就要用到這個非活動關係,利用DAX函式USERELATIONSHIP來臨時啟用這個虛線關係,按發貨日期的收入度量值可以這樣寫:

收入 按發貨日期= CALCULATE( [收入],

USERELATIONSHIP('日期表'[日期],'訂單表'[發貨日期])

USERELATIONSHIP函式是專門用來啟用非活動關係的,它的引數是構成關係的兩列,這兩列的順序無所謂,不影響計算結果,並且USERELATIONSHIP啟用關係的前提是,這兩列已經在模型中建立了非活動關係,否則將會報錯。

USERELATIONSHIP啟用非活動關係後,會自動斷開原有的活動關係,不過關係的啟用以及原有關係的斷開都是臨時的,且只在該表示式內部生效,並不影響模型中的其他計算。

用矩陣顯示這兩個度量值的結果如下:

認識Power BI中的非活動關係和USERELATIONSHIP函式

因為當天的訂單,不一定當天都能發貨,所以,在某個日期或者某個時間段內,按訂單日期的收入與按發貨日期的收入總會有個時間差。

更進一步的,如果想動態的切換按訂單日期的收入、以及按發貨日期的收入,則可以建立個輔助表(Power BI 輔助表製作方式彙總),

認識Power BI中的非活動關係和USERELATIONSHIP函式

並利用這個輔助表中的型別生成切片器,然後寫個度量值來判斷切片器的選項,來返回相應的計算:

認識Power BI中的非活動關係和USERELATIONSHIP函式

然後就可以動態切換了。

認識Power BI中的非活動關係和USERELATIONSHIP函式

透過上面的介紹,是不是理解了非活動關係呢,它與USERELATIONSHIP函式總是同時出現,在不影響原有模型的情況下,靈活的實現另一種關係查詢。在之前介紹的關聯分析中,也用到了非活動關係,可以再看看這篇文章加深理解:

更多推薦

認識Power BI中的非活動關係和USERELATIONSHIP函式

有幫助別忘了點贊哦。

掌握一個技能

專研一個領域

成為更好的自己

標簽: 日期  關係  發貨  訂單  虛線