如何在DAX Studio或SSIS中查询DAX表达式含指定子串的度量值?
问题原因
你执行的是Analysis Services专属的DMV(动态管理视图)查询,语法既不兼容标准SQL的LIKE关键字,也不支持直接调用DAX函数,需要使用DMV内置的InStr函数实现子串匹配。另外你之前的代码错误筛选了度量名列,没有匹配到实际需要的DAX表达式列。
正确查询代码
select MEASURE_NAME as MeasureName ,MEASUREGROUP_NAME as TableName ,TRIM(EXPRESSION) as DAXExpression from $system.MDSCHEMA_MEASURES -- InStr返回子串首次出现的位置,大于0即表示包含对应子串 where InStr(TRIM(EXPRESSION), "SUM") > 0 order by MEASUREGROUP_NAME
适用工具说明
- 该代码可以直接在DAX Studio中运行,连接到你的PowerBI数据集即可返回符合要求的度量值
- 如果你使用SQL Server Management Studio(SSMS),需要先连接到PowerBI对应的XMLA端点,在MDX查询窗口中执行上述代码即可得到结果
补充说明
如果需要忽略大小写匹配,比如同时匹配sum、Sum、SUM等格式,可以改用InStr的大小写不敏感重载:
where InStr(1, TRIM(EXPRESSION), "SUM", 1) > 0
参数解释:
- 第1个参数:搜索起始位置,填1即从字符串开头搜索
- 第4个参数:填1表示执行文本比较(忽略大小写),填0表示二进制比较(区分大小写)
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

