函式週期表丨篩選丨值丨KEEPFILTERS

2021-10-24 16:21:50 字數 2553 閱讀 8171

keepfilters函式

如果說,calculate函式和calculatetable函式是霸道的話,那麼keepfilters函式就是溫柔。

calculate函式,本身的作用我們都知道,就是修改上下文形成新的上下文,會覆蓋原有列的所有上下文,以calculate函式的結果作為新的上下文。

其本身行為是霸道的,keepfilters函式就是為了彌補這種霸道而產生的。

用途:將calculate函式本身的覆蓋上下文修改為追加上下文。

語法

dax=

keepfilters(《表示式》)

引數表示式:任意表示式。

返回結果

例子

模擬資料:

這是白茶隨機模擬的資料。

calculate例子 =

calculate ( sum ( '例子'[資料] ), '例子'[類別] = "白茶" )

結果:

這段calculate的**,將條件限定為「白茶」,因此白茶這一條件直接覆蓋了當前列中的其他篩選條件,只顯示這一項。

keepfilters例子 =

calculate ( sum ( '例子'[資料] ), keepfilters ( '例子'[類別] = "白茶" ) )

對比一下結果:

而使用keepfilters函式的結果,是將「白茶」這一條件,追加到當前篩選中。

calculate是找到「白茶」這個人,在你們團隊,那麼你們團隊就一起處罰;

而keepfilters是追加篩選是什麼意思?就是我找到「白茶」這個人了,和其他人無關,只對「白茶」進行處罰。

雖然白茶說的話可能粗糙一點,但是意思差不多。

可能還是不太好理解,我們再新增兩組**進行對比:

**1:

聚合 =

sum ( '例子'[資料] )

**2:

calculate例子 =

calculate ( sum ( '例子'[資料] ), '例子'[類別] = "白茶" )

**3:

calculate例子2 =

calculate ( sum ( '例子'[資料] ), '例子'[類別] = "白茶", values ( '例子'[類別] ) )

**4:

keepfilters例子 =

calculate ( sum ( '例子'[資料] ), keepfilters ( '例子'[類別] = "白茶" ) )

結果:

分別進行解釋:

sum本身受到上下文的影響,因此會自動呈現每個篩選條件的數值;

calculate例子只有乙個篩選條件為「白茶」,這個條件覆蓋了當前的篩選,導致每行的條件都是「白茶」;

keepfilters例子將「白茶」這一條件,追加到當前篩選中,二者取交集,因此只有「白茶」呈現;

calculate例子2先是受到內部優先順序影響,執行values函式,其次「白茶」這一條件圍繞著values函式進行,二者取交集,呈現「白茶」結果。

因此,雖然keepfilter例子結果與calculate例子2結果是一樣的,但是執行邏輯不同。

前者是內部條件與外部篩選取交集;

後者是內部條件取交集,不涉及外部。

白茶是用calculate函式進行舉例的,對於calculatetable函式效果也差不多,這裡就不贅述了。

小夥伴們❤get了麼?

白茶會不定期的分享一些函式卡片

(檔案在知識星球[powerbi丨需求圈])

這裡是白茶,乙個powerbi的初學者。

函式週期表丨篩選丨值丨SELECTEDVALUE

selectedvalue函式 selectedvalue函式屬於 篩選 類函式,隸屬於 表函式 微軟官方介紹是這麼說的 當指定列當前上下文中只有乙個非重複值時,返回該值 否則返回替代結果,省略則返回空值 其實按照白茶的理解,通俗點來說,就是根據當前上下文匹配相關值。用途 通常用於度量值中,獲取外部...

函式週期表丨篩選丨值 表丨RELATED系列

related函式relatedtable函式 這兩個函式屬於 篩選 類函式,通常情況下適用於跨表計算。用途 根據模型關係,匹配對應數值。related會根據模型關係將維度表的資料匹配到事實表,也就是多端找一端對應值 relatedtable是related的表函式模式,通常是將事實表的資料匹配到維...

函式週期表丨篩選丨無丨REMOVEFILTERS

removefilters函式 removefilters函式屬於 篩選 類函式,其本身不屬於表函式,也不屬於值函式,僅作為calculate函式的調節器使用。remove 移除的意思 filters 篩選的意思 因此removefilters函式的用途顧名思義,移除篩選器的效果。這麼說可能比較繞,...