【问题标题】:Bind 2 different OLAP Cube results绑定2个不同的OLAP Cube结果
【发布时间】:2021-06-10 11:09:30
【问题描述】:

有没有办法将 2 个具有相同结构的 OLAP 多维数据集绑定到一个? 至于现在,我每天处理过去 10 年的大数据集(每个立方体有 20-50 百万条记录)。出于优化目的,我想将其分开。例如过去 8 年的数据将被处理一次,新数据将每天处理。它需要 2 个立方体,但我可以合并它的结果吗?

编辑。我在博客和论坛上阅读有关数据分区的信息,但它是如何真正起作用的?我能否只处理新数据,而不需要处理所有 30 多万行?

【问题讨论】:

  • 分区正是您想要做的事情。如果您想保持简单,请为历史数据和当年创建一个分区。您只需要对每个分区进行相应过滤的源查询。这是一个详细的解释,但实际上大部分都是点击式的:sqlshack.com/…
  • 我确实为我的数据创建了 3 个分区,但我找不到应该为它们更改流程的位置。我只想用我的最新数据对 1 个分区进行完整处理。再想想这些聚合是如何工作的?

标签: ssis ssas olap


【解决方案1】:

处理这些分区与多维数据集设计分开进行。解决此问题的一种方法是编写命令脚本并在 sql 代理作业中运行它们:

1- 连接到 ssas 实例,浏览到维度文件夹并按 F7 打开对象资源管理器详细信息窗口。
2-突出显示所有尺寸,右键单击并选择流程

3- 在对话框中,选择脚本按钮并选择脚本操作到新的查询窗口或脚本操作到剪贴板并将其保存在某个地方。这将是更新所有维度的 xmla 命令。

4- 接下来,导航到您在其中创建分区的度量值组,然后选择组中您要每天刷新的最后一个分区。右键单击,选择进程并使用脚本选项创建一个xmla命令

5- 接下来,选择度量值组文件夹并选择对象资源管理器详细信息窗口中的所有度量值组,分区组除外。右键单击,选择进程并按照步骤 3 编写命令。

6- 现在您已拥有所有命令,将它们添加到 SQL 代理作业中,其中包含 3 个 xmla 命令步骤,一个用于处理维度,接下来的两个用于处理度量值组和最近的分区。请注意,如果这是在 sql 代理服务帐户下运行,则该帐户将需要具有处理多维数据集的权限。

提示添加另一个作业以在周末运行,该作业在整个多维数据集上执行一个完整的进程。这是一个小清理步骤,可确保一切保持同步。

【讨论】:

  • 帮助很大!所以基本上我需要处理维度、度量和我需要的一个分区。其他分区不需要刷新什么的?实际上,我使用 RapMSSQL 凭据从 DTSX 包运行它。所以我通常也可以将它粘贴到 SQL 任务中。
  • 对于第 5 点。我的 3 个分区只有 1 个度量值组。我也应该处理其他分区吗?在这个度量中,我应该将 Withc 进程用于其他分区吗?
  • 好吧。我处理了这一切,分区用了不到 30 分钟。有没有办法更快地处理维度?我花了 2.5 小时,最慢的动作是在维度使用中具有 Fact 关系的多维数据集维度。
  • 因此,所有度量值组都应首先处理。然后在周末处理整个立方体。我通常会尝试使用更新,而不是完整的维度,这可能会加快速度。由于源查询,它也可能很慢。如果您使用的是视图并且查询速度很慢,则可以将数据暂存到物理表中并从中读取。
  • A 已经将我的所有视图更改为表格,并在那里推送最新数据。也许我应该添加一个更好的索引。有一些非聚集索引。如果我要在用于过滤分区的日期时间上添加一个聚集索引,它会对我有帮助吗?
猜你喜欢
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多