Power BI中无需逆透视,用DAX/度量值统计列内特定值出现次数
在Power BI中统计含多值列的特定值出现次数(无需逆透视)
完全可以通过DAX度量值实现需求,无需执行逆透视操作,以下是具体方案:
核心逻辑
借助DAX文本函数拆分每行的多值内容,生成临时的拆分后值集合,再筛选统计目标值的出现次数,全程保留原表结构。
基础DAX度量值示例
假设你的表名为SampleTable,待统计列是Tags,要统计的特定值为"A",可使用如下度量值:
CountSpecificValue = VAR TargetValue = "A" VAR SplitValues = ADDCOLUMNS( SampleTable, "@Split", PATHITEMIZE(SUBSTITUTE(SampleTable[Tags], ",", "|"), 0) ) VAR ExpandedValues = SELECTCOLUMNS( SplitValues, "@Value", [@Split] ) RETURN COUNTROWS(FILTER(ExpandedValues, [@Value] = TargetValue))
表达式细节说明
SUBSTITUTE(SampleTable[Tags], ",", "|"):将列中的多值分隔符(示例为逗号,可根据实际场景替换)替换为PATH系列函数支持的|符号PATHITEMIZE(..., 0):将每行的多值内容拆分为单独的行级值集合ADDCOLUMNS+SELECTCOLUMNS:构建临时表存储拆分后的所有值COUNTROWS(FILTER(...)):筛选出匹配目标值的行并统计数量
适配不同分隔符场景
如果你的多值分隔符不是逗号,仅需修改SUBSTITUTE函数内的分隔符即可,比如分隔符是分号时:
SUBSTITUTE(SampleTable[Tags], ";", "|")
动态切换统计目标值
若需通过切片器动态选择要统计的值,可先创建一个包含所有可选值的辅助表(比如ValueList),再修改度量值:
CountDynamicValue = VAR TargetValue = SELECTEDVALUE(ValueList[Value]) VAR SplitValues = ADDCOLUMNS( SampleTable, "@Split", PATHITEMIZE(SUBSTITUTE(SampleTable[Tags], ",", "|"), 0) ) VAR ExpandedValues = SELECTCOLUMNS( SplitValues, "@Value", [@Split] ) RETURN IF(NOT ISBLANK(TargetValue), COUNTROWS(FILTER(ExpandedValues, [@Value] = TargetValue)), 0)
内容的提问来源于stack exchange,提问作者bambam
相关产品推荐
相关产品推荐

