Power BI中检查列值是否包含字符串列表任意内容的方法
批量统计包含指定字符串列表的Tag总数(DAX方案)
你可以通过DAX的迭代或筛选函数,一次性匹配P Values表中的所有字符串,无需重复编写400次函数。以下是两种实用方案:
方案一:用SUMX逐行判断后求和
符合条件的标签总数 = SUMX( 'Tag Table', VAR 当前TagId = 'Tag Table'[tags.Id] RETURN IF( COUNTROWS( FILTER( 'P Values', CONTAINSSTRING(当前TagId, 'P Values'[Column1]) && NOT ISBLANK('P Values'[Column1]) ) ) > 0, 1, 0 ) )
逻辑说明:
SUMX遍历Tag Table的每一行标签- 对每个标签ID,用
FILTER筛选P Values中能被当前ID包含的非空字符串 - 只要存在匹配的字符串,该行标签计1分,否则计0分
- 最终求和得到符合条件的标签总数
方案二:用EXISTS结合CALCULATE直接计数(性能更优)
符合条件的标签总数 = CALCULATE( COUNTROWS('Tag Table'), EXISTS( 'P Values', CONTAINSSTRING('Tag Table'[tags.Id], 'P Values'[Column1]) && NOT ISBLANK('P Values'[Column1]) ) )
逻辑说明:
EXISTS函数会检查当前标签ID是否存在对应的匹配字符串(来自P Values)- 只有满足匹配条件的标签行才会被保留在筛选上下文中
COUNTROWS直接统计筛选后的标签数量,性能比逐行迭代更高效
注意事项:
- 加入
NOT ISBLANK('P Values'[Column1])是为了避免空字符串导致的误匹配(如果你的列表中没有空值,可以省略) - 若字符串列表中有重复值,无需提前去重,两种方案都会自动处理重复匹配的情况
内容的提问来源于stack exchange,提问作者curtis
相关产品推荐
相关产品推荐

