in運算子和containsrow函式
in和containsrow函式隸屬於「資訊」類函式,二者除了語法上的區別,其效果是等同的。
用途:適用於多列條件判定。
相對於contains函式而言,二者的寫法和運算更為優化。語法語法1:注:二者執行完全相等的比較,空值不能等同於0。
dax1=
《比較值》 in 《被比較的表》
dax2=
( 《比較值1>, 《比較值2>, … ) in 《被比較的表》
語法2:
dax=
containsrow(《被比較的表》, 《比較值1>[, 《比較值2>, …])
引數比較值:(可重複)需要進行比較的值,可以是表示式。
被比較的表:提供進行對比的範疇,可以是表示式。
返回結果
判定比較值是否在被比較的表中,返回true或者false。
例子
模擬資料:
這是白茶隨機模擬的乙份資料,乙份事實表,乙份維度表,從例子中我們能看出來,維度並不是完全對應事實例子的。
例子1:篩選出類別在[維度表]中的例子表資料。
in例子1 =
filter ( '例子', '例子'[類別] in values ( '維度'[類別] ) )
結果:
containsrow例子1 =
filter ( '例子', containsrow ( '維度', '例子'[類別] ) )
結果:
例子2:篩選出維度表與例子表同時存在的顏色。
in例子2 =
filter ( '維度', '維度'[類別] in values ( '例子'[類別] ) )
結果:
containsrow例子2 =
filter ( '維度', containsrow ( values ( '例子'[類別] ), '維度'[類別] ) )
結果:
例子3:與虛擬表搭配使用。
in例子3 =
var tll =
summarize ( '例子', '例子'[類別], "日期", calculate ( max ( '例子'[日期] ) ) )
return
filter ( '例子', ( '例子'[類別], '例子'[日期] ) in tll )
結果:
containsrow例子3 =
var tll =
summarize ( '例子', '例子'[類別], "日期", calculate ( max ( '例子'[日期] ) ) )
return
filter ( '例子', containsrow ( tll, [類別], [日期] ) )
結果:
從上面的三個例子我們能看出,in運算子與containsrow函式除了語法上的差別,其結果並沒有太大的出入;小夥伴們❤get了麼?白茶會不定期的分享一些函式卡片(檔案在知識星球[powerbi丨需求圈])這裡是白茶,乙個powerbi的初學者。值得注意的是,當多列進行判定時,一定要保證被比較的表與比較值的專案數相對應,比如表中是3列,提供的比較值是2列,這樣的話結果會報錯或者無法得到結果。
函式週期表丨資訊丨值丨CONTAINS
contains函式 contains函式,隸屬於 資訊 類函式。用途 適用於多列條件判定。流景大佬提過,這個函式有點落後了,但是白茶覺得這個函式相對於其他多列判定而言,更容易被理解。語法 dax contains 表 被比較的列 比較值 被比較的列 比較值 引數表 可以是現有列,也可以是表示式。被...
函式週期表丨資訊丨值丨ISONORAFTER
isonorafter函式 isonorafter函式隸屬於 資訊 類函式。這個函式的出場率並不是特別高,其效果類似於start at的行為,屬於冷門函式之一。用途 可以用來劃定範圍。語法 dax isonorafter 值1 值2 排序 值1 值2 排序 引數值1 可重複 與第二引數進行對比的表示...
函式週期表丨資訊丨值丨資訊類函式
資訊類函式 這一部分函式,屬於用法比較簡單的資訊類函式,沒有什麼太大的說道,通常可以用在任意一種邏輯表示式。結果返回都是true或者false。用途 用來判定各種資料型別。isblank dax isblank 值 作用 判定值是否為空白。iserror dax iserror 值 作用 判定值是否...