keepfilters函式
如果說,calculate函式和calculatetable函式是霸道的話,那麼keepfilters函式就是溫柔。
calculate函式,本身的作用我們都知道,就是修改上下文形成新的上下文,會覆蓋原有列的所有上下文,以calculate函式的結果作為新的上下文。用途:將calculate函式本身的覆蓋上下文修改為追加上下文。其本身行為是霸道的,keepfilters函式就是為了彌補這種霸道而產生的。
語法
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 ( '例子'[類別] = "白茶" ) )
結果:
分別進行解釋:因此,雖然keepfilter例子結果與calculate例子2結果是一樣的,但是執行邏輯不同。sum本身受到上下文的影響,因此會自動呈現每個篩選條件的數值;
calculate例子只有乙個篩選條件為「白茶」,這個條件覆蓋了當前的篩選,導致每行的條件都是「白茶」;
keepfilters例子將「白茶」這一條件,追加到當前篩選中,二者取交集,因此只有「白茶」呈現;
calculate例子2先是受到內部優先順序影響,執行values函式,其次「白茶」這一條件圍繞著values函式進行,二者取交集,呈現「白茶」結果。
前者是內部條件與外部篩選取交集;
後者是內部條件取交集,不涉及外部。
白茶是用calculate函式進行舉例的,對於calculatetable函式效果也差不多,這裡就不贅述了。
小夥伴們❤get了麼?
白茶會不定期的分享一些函式卡片
(檔案在知識星球[powerbi丨需求圈])
這裡是白茶,乙個powerbi的初學者。
函式週期表丨篩選丨值丨SELECTEDVALUE
selectedvalue函式 selectedvalue函式屬於 篩選 類函式,隸屬於 表函式 微軟官方介紹是這麼說的 當指定列當前上下文中只有乙個非重複值時,返回該值 否則返回替代結果,省略則返回空值 其實按照白茶的理解,通俗點來說,就是根據當前上下文匹配相關值。用途 通常用於度量值中,獲取外部...
函式週期表丨篩選丨值 表丨RELATED系列
related函式relatedtable函式 這兩個函式屬於 篩選 類函式,通常情況下適用於跨表計算。用途 根據模型關係,匹配對應數值。related會根據模型關係將維度表的資料匹配到事實表,也就是多端找一端對應值 relatedtable是related的表函式模式,通常是將事實表的資料匹配到維...
函式週期表丨篩選丨無丨REMOVEFILTERS
removefilters函式 removefilters函式屬於 篩選 類函式,其本身不屬於表函式,也不屬於值函式,僅作為calculate函式的調節器使用。remove 移除的意思 filters 篩選的意思 因此removefilters函式的用途顧名思義,移除篩選器的效果。這麼說可能比較繞,...