我正在使用2个星型模式数据仓库,每个数据仓库包含一个事实表,维度表位于不同的数据库中(两个数据仓库使用的数据库)。
我为每个数据仓库创建了一个多维分析项目:
当尝试浏览第二个多维数据集时,一切正常,但是当我尝试浏览维度或在浏览多维数据集时添加过滤器时,管理工作室没有响应。几个小时后,它返回以下错误消息:
检索子节点时出错:行中的Messages元素(命名空间urn:schemas-microsoft-com:xml-analysis:exception)不能出现在Envelope / Body / ExecuteResponse / return / SubCube下
在搜索此问题时,我发现一些文章提到当分析数据库位于不同的服务器上时,不建议使用链接维度。但就我而言,数据仓库和分析数据库位于同一台服务器上。
此外,我试图使用FILTER()
使用MDX查询运行相同的过滤器逻辑,没有运气。 MDX查询语法类似于:
SELECT ([Dimension2].[---].[---], [MeasureGroup].[Measure]) ON COLUMNS,
FILTER([Dimension1].[---].[---],[Dimension1].[---].[---].CurrentMember.Name = "FilterValue") ON ROWS
FROM [AnalysisCube]
请注意:尺寸包含超过4 GB且CompatibilityLevel
设置为1100
。
有什么建议?
基于以下Microsoft参考:
SSAS允许您将链接的维度添加到其他多维数据库,以便您只有一个维度来构建和维护。但是,链接维度的使用不被认为是SSAS开发中的最佳实践,因为它可能会产生性能问题。
考虑构建一次并重用开发工作的另一种方法是将.dim文件保存在源代码管理中。然后,您可以要求新的多维数据库项目从源代码控制添加.dim文件,而不是直接构建新维度。这样,您可以将设计保持在中心位置,并从可重用性中受益,而不会引入潜在的性能问题。
从上面的信息看,从性能角度来看,似乎不建议使用链接维度。