SSAS Tabular M分区报错求助:数据源与模型定义不一致
解决SSAS Tabular分区处理报错:M分区使用的数据源未在模型中定义
报错原因
直接在M表达式中硬编码Sql.Database连接字符串的写法,违反了SSAS Tabular的规则:分区的数据源必须是模型中预先定义并注册的数据源,不能直接通过M函数调用外部未注册的连接。
解决步骤
确认/创建模型数据源
确保你的SSAS Tabular模型中已经创建了指向ServerName服务器、mydatabase数据库的数据源(如果没有,在模型设计器中新建SQL Server数据源,配置正确的连接信息和权限)。修改M表达式,引用模型已定义的数据源
不要直接使用Sql.Database,而是通过Model.DataSources引用模型内的数据源,再执行查询:- 如果直接读取表:
let Source = Model.DataSources, TargetDB = Source{[Name="你的数据源名称"]}[Data], TargetTable = TargetDB{[Schema="dbo", Item="DW_D_AC_CERTIF_OPER_DIM"]}[Data] in TargetTable - 如果需要执行自定义SQL查询:
let Source = Model.DataSources, TargetDB = Source{[Name="你的数据源名称"]}[Data], QueryResult = Value.NativeQuery(TargetDB, "SELECT * FROM DW_D_AC_CERTIF_OPER_DIM", null, [EnableFolding=true]) in QueryResult
注意:把
你的数据源名称替换成你模型中实际的数据源名称,Schema部分根据你的表所在Schema调整(比如如果表在dwSchema下就改成dw)。- 如果直接读取表:
重新处理分区
保存修改后的M表达式,重新执行分区处理操作即可。
内容的提问来源于stack exchange,提问作者Luis
相关产品推荐
相关产品推荐

