如何编写DAX函数以从引用表的字符串列表中计算包含字符串的列中的单元格数。
例如,假设我有一个项目表和一个参考表:
项目表:
id items_list
1 hats, jar, shoes
2 Fedora, key, Pens
3 Fedora, jars, Pens
4 baseball cap, Sandals
参考类型表:
id hat_types shoe_types
1 hat shoes
2 fedora sandals
3 cap
我想编写一个DAX函数,该函数从“引用类型”表中获取字符串,并检查该字符串是否包含在“项目”表中。如果可以,则计算行数。
例如:
当查看hat_types列中的字符串是否包含在items_list中时,我可以计数4行。
当查看shoe_types列中的字符串是否包含在items_list中时,我可以计算2行(第一行和最后一行)。
如何在Power BI上执行此操作?
非常感谢您能提供的任何帮助!
谢谢
答案 0 :(得分:0)
您可以执行以下操作:
ShoeCount =
SUMX(Items,
IF(
SUMX(ReferenceType,
IF(
LEN(SUBSTITUTE(LOWER(Items[items_list]), ReferenceType[shoe_types], ""))
< LEN(Items[items_list]),
1
)
) > 0,
1
)
)
这会遍历Items
表中的每一行,并检查shoe_types
中的任何一个是否是items_list
的子字符串。如果是这样,则将一个加到计数中。
我通过尝试用空字符串shoe_types
替换任何出现的""
字符串并检查是否使整个items_list
字符串更短来测试子字符串。
注意:LOWER
会将字符串转换为所有小写字母,以实现更好的匹配。
帽子计数措施可以类似地进行。您需要做的就是将shoe_types
更改为hat_types
。