构建整个 SSAS 多维数据集不起作用,按维度构建维度 - 构建顺序?
Posted
技术标签:
【中文标题】构建整个 SSAS 多维数据集不起作用,按维度构建维度 - 构建顺序?【英文标题】:Building whole SSAS cube does not work, building dimension by dimension works - build order? 【发布时间】:2013-02-15 10:48:14 【问题描述】:在 SSAS 上构建多维数据集时遇到一个奇怪的问题。我有一个事实表,比如说 FactActivity。然后我有一个维度DimActivity,它和这个事实是1对1的关系,所有的外键都绑定到这个维度上。所以日期维度、产品维度等等,都绑定到了 DimActivity。
当我构建整个多维数据集时,它似乎是在维度之前构建事实,因此它给了我错误。但是,如果我在事前手动构建维度,它就可以工作。
除了使用分析服务处理任务从 SSIS 执行此操作之外,我是否可以在 SSAS 中配置构建顺序?
非常感谢!
【问题讨论】:
你上面说“当我构建整个立方体时”。我认为您需要更精确,因为这可能有很多含义。 【参考方案1】:处理多维数据集不会处理与其相关的维度,因为它们在 SSAS 中构造为单独的实体。在实践中,这意味着维度可以在与多维数据集无关的情况下存在、处理和访问。
没有“配置的一般构建顺序”之类的东西。应由您决定如何处理 AS 对象。有很多工具可以帮助实现这一点,它们都会做同样的事情:构建 XMLA 脚本以在 AS 服务器上运行。
-
SSIS:分析服务处理任务
配置 SQL 代理作业。
使用 SSMS 执行手动流程。
使用 AMO 对您的处理活动进行编程
...
重要的是,您应该在处理多维数据集之前处理维度。一个简单的解决方案是处理整个 SSAS 数据库(包含您的多维数据集和维度)。这样,SSAS 将在处理多维数据集之前自动处理维度。
Documentation on processing Analysis Services objects
【讨论】:
我通过使用 SSIS 处理任务来解决它,但我认为来自 BIDS 的东西应该能够配置它。【参考方案2】:在处理维度或整个多维数据集时,在单击“运行”之前,单击“更改设置...”按钮。在那里你可以改变它应该处理的方式。此链接描述了可用选项的效果。
http://technet.microsoft.com/en-us/library/ms174774.aspx
HTH
【讨论】:
【参考方案3】:对于遇到类似问题的其他人......
我偶尔会遇到多维数据集处理错误的原因是刷新同时发生 - 由于计划的每小时导入。
我现在使用日志来查看正在运行的 SSIS 包。导入活动时,我在此表中插入了一条记录,状态为“正在运行”。
在处理多维数据集之前,我有一个信号量来检查此表中的记录,这些记录是数据导入并且具有“正在运行”状态。如果当前没有导入正在运行,我只允许刷新多维数据集。当多维数据集正在处理时,导入也有一个信号量,并且不会开始导入,除非当前没有多维数据处理“正在运行”。
实现此逻辑后,我在处理多维数据集时从未遇到任何错误。
【讨论】:
以上是关于构建整个 SSAS 多维数据集不起作用,按维度构建维度 - 构建顺序?的主要内容,如果未能解决你的问题,请参考以下文章
SSAS - 是不是可以在不重新部署整个多维数据集的情况下将属性添加到现有维度
BI之SSAS完整实战教程3 -- 创建第一个多维数据集.docx
无法使 ConvertToUnknown 维度在 SSAS OLAP 多维数据集上工作