PowerBI中将SSAS连接转为NativeQuery遇语法错误求助
SSAS NativeQuery语法错误修正建议
问题背景
在PowerBI中尝试通过Value.NativeQuery封装SSAS连接,用查询语句精简数据量时,出现列找不到的语法错误。
可用的SSAS连接代码
let Source = AnalysisServices.Database("XXX.com", "Pro", [TypedMeasureColumns=true, Implementation="2.0"]){[Id="Pro"]}[Data]{[Id="Pro"]}[Data], #"Added Items" = Cube.Transform(Source, { {Cube.AddAndExpandDimensionColumn, "[Contacts]", {"[Contacts].[ContactType].[ContactType]"}, {"Contacts.ContactType"}} }) in #"Added Items"
错误的NativeQuery代码
let Source = Value.NativeQuery(AnalysisServices.Database("XXX.com", "Pro", [Implementation="2.0"]), "SELECT ContactType FROM Pro.Contacts " , null, null ) in Source
报错信息
DataSource.Error: AnalysisServices: Query (2, 10) 无法在'Contacts'表中找到'ContactType'列。
修正方案
SSAS(分析服务)使用**MDX(多维表达式)**而非普通关系型SQL语法,你之前用的SQL写法不符合SSAS的查询规范,导致报错。
正确的NativeQuery写法(MDX)
将查询语句替换为符合SSAS多维模型的MDX语句,同时调整PowerQuery代码:
let Source = Value.NativeQuery( AnalysisServices.Database("XXX.com", "Pro", [Implementation="2.0"]), "SELECT [Contacts].[ContactType].[ContactType].MEMBERS ON COLUMNS FROM [Pro]", null, [EnableFolding=true] ) in Source
关键说明
- MDX语法规则:SSAS的维度列需要用完整层级路径引用,比如
[Contacts].[ContactType].[ContactType],而非直接写ContactType;多维数据集需用[Pro]格式引用,不是Pro.Contacts。 - 启用折叠:添加
[EnableFolding=true]参数可确保查询在SSAS端执行,真正实现数据量精简。 - 结果转换:若需将MDX返回的成员转为表格格式,可后续添加
Table.FromColumns等步骤处理结果。
内容的提问来源于stack exchange,提问作者BotBitBanger
相关产品推荐
相关产品推荐

