Power BI DAX-如果包含引用表中的字符串,则对记录数进行计数

时间:2018-11-11 23:16:41

标签: powerbi dax

如何编写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上执行此操作?

非常感谢您能提供的任何帮助!

谢谢

1 个答案:

答案 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