DAX实现类似TSQL string_split功能匹配逗号分隔ValueKey方案咨询
DAX实现逗号分隔值匹配筛选方案
DAX 没有内置的STRING_SPLIT函数,可通过PATH系列函数搭配表生成函数实现同等效果,具体实现如下:
实现逻辑
- 先拆分Table1中逗号分隔的
ValueKey文本,转换为整数类型的单行单值列表 - 用生成的Key列表匹配筛选Table2,提取需要的ID、Value字段生成临时表
单步完成的DAX代码
结果临时表 = // 拆分Table1的ValueKey得到所有目标筛选值 VAR TargetKeyList = SELECTCOLUMNS( GENERATE( Table1, // 将逗号分隔符替换为PATH函数识别的|分隔符 VAR KeyPath = SUBSTITUTE(Table1[ValueKey], ",", "|") // 计算拆分后的Key总数量 VAR KeyTotal = PATHLENGTH(KeyPath) // 生成序列遍历每个Key的位置 RETURN GENERATESERIES(1, KeyTotal, 1) ), // 提取对应位置的Key并转为INT类型,和Table2的ValueKey类型匹配 "TargetKey", INT(PATHITEM(SUBSTITUTE(Table1[ValueKey], ",", "|"), [Value])) ) // 筛选Table2并提取需要的字段 RETURN SELECTCOLUMNS( FILTER(Table2, Table2[ValueKey] IN TargetKeyList), "ID", Table2[ID], "Value", Table2[Value] )
结果验证
根据你提供的示例数据,最终生成的结果临时表会返回2行符合要求的数据:
| ID | Value |
|---|---|
| ID1 | 87,8 |
| ID4 | 13,4 |
注意事项
- 代码兼容所有支持DAX的环境(SSAS、Power BI、Excel Power Pivot)
- 若Table1存在多行
ValueKey记录,代码会自动拆分所有行的分隔值,无需额外调整
内容的提问来源于stack exchange,提问作者Juraj C
相关产品推荐
相关产品推荐

