运行SSAS多维数据集遇OLE DB错误:未定义列sh.SiteHours_Id求助
检查SSAS数据源视图的表别名与列映射
确认SSAS数据源视图中对应Redshift表的别名是否为sh,是否存在别名被误修改的情况;同时核对该视图内SiteHours_Id列的映射关系,确保它确实关联到Redshift目标表的对应列——手动刷新视图后映射偶尔会失效。提取并验证SSAS生成的SQL语句
通过SSAS Profiler或查询日志,导出SSAS发送给Redshift的实际SQL语句,直接在Redshift客户端(如SQL Workbench/J)执行该语句。如果执行报错,说明是SSAS生成的SQL存在别名或列名错误,修正后再回SSAS调整模型;如果执行正常,则排查连接或驱动层面的问题。核对Redshift列名的大小写敏感性
Redshift默认区分大小写(若表/列名通过双引号创建)。执行Redshift查询SELECT column_name FROM information_schema.columns WHERE table_name = '你的表名',获取SiteHours_Id的精确大小写,确保SSAS数据源视图中的列名与之一致,避免因大小写不匹配导致的列未定义错误。刷新SSAS数据源与视图
右键SSAS项目中的数据源选择"刷新",同步最新的Redshift表结构;再对数据源视图执行"刷新"操作,清除旧缓存并重新同步表列映射关系。重新检查多维数据集的关联定义
再次确认SSAS中维度表与事实表的关联是否基于sh.SiteHours_Id,排查是否存在关联列选错、多表别名冲突(如多个表使用了sh别名)的情况;同时查看多维数据集的维度用法,确保事实表与维度表的关联键正确指向SiteHours_Id列。升级ODBC/OLE DB驱动版本
确认连接Redshift使用的ODBC/OLE DB驱动为官方最新版本,旧驱动可能存在列名或别名的兼容性问题。卸载旧驱动后安装Redshift官方提供的最新驱动,重新配置SSAS数据源。
内容的提问来源于stack exchange,提问作者insanity

