1

每年我们都会保留一个我们的立方体的历史副本。今年有人决定他们想付钱给我们为立方体添加一个以前不存在的属性。好吧,我喜欢钱,但问题是我们没有建立这个立方体的数据库的备份。

所以我的脑海中出现了一个问题,我们是否需要那个原始数据库来为这个多维数据集添加一个新属性?我们是否可以向多维数据集添加新属性并仅处理此属性而无需多维数据集原始数据源?

当我将属性添加到 SSAS 多维数据集和进程时,我对幕后发生的事情没有很好的理解,我不能说这是否可能。我可以想象,多维数据集可能在它可以工作的数据源的内存中有一个快照。我也可以想象这将是非常低效的,所以这有可能是不可能的

编辑:至少添加一个使用多维数据集中现有数据的计算成员似乎是可行的。

我还应该提到,我尝试向这样的多维数据集添加属性并收到错误:

"Dimension [Partner] cannot be saved File system error failed to copy file C:\\MYSQLSERVER\OLAP\DATA\2013_Cube.db\\.dim\.dstore 到 C:\\MYSQLSERVER\OLAP\DATA\2013_Cube.db\ \.dim\.dstore 文件存在”

抱歉,我稍微伪造了这些文件路径。

4

2 回答 2

2

这项任务非常艰巨。我能想象的唯一方法是根据数据源视图手动重建原始数据库(它具有缓存的元数据),然后尝试使用 SSAS 查询工具(例如 Excel、SSRS、OLE DB)生成数据以填充它分析服务提供商)。

如果您想在一个维度中添加一个属性,您可以将这项工作限制在相关维度的源数据上。

于 2012-11-02T02:14:42.843 回答
1

首先让我根据流程的步骤来解释立方体是如何存储数据的!!!

  1. 获取数据源 - 数据!!!那就是访问原始数据库/文件等。此时所有数据都在主要来源。所有数据都以一种或另一种方式标准化。
  2. 构建数据仓库。ELT 过程。此时,您将所有数据组合在一个非规范化的仓库中,没有外键或任何约束。所有数据现在都处于非规范化 sql 数据库中的中间状态,并准备好在多维数据集中使用。
  3. 构造 OLAP 多维数据集。数据仓库现在是您的数据源。现在,所有数据都在多维数据集中的行中与其对应的值聚合在一起。冗余是巨大的,数据是 100% 非规范化的,它们几乎不遵循模式(当然它们这样做,但并不总是容易理解)。

这种状态的一个例子是这样的一行

Company -> Department -> Room | Value(Employees)
ET LTD  -> IT -> Room 4 -> | 4 

Value(Revenue) 将存在完全相同的行。所以本质上所有数据都存在于 SSAS 数据库(多维数据集)中。重建数据库意味着大量的逆向工程。

您可以创建一个新的 C# 程序,使用 MDX 连接器和查询来获取数据,并使用 MSsql 连接器将它们保存在 OLTP 数据库中。MDX 的学习曲线陡峭,网站上的引用很少,因此不建议使用上述方法。

我不知道如何从 excel 中获取数据,因为 excel 以动态方式从 DataConnection 中获取数据透视表数据。

于 2012-11-05T15:09:32.950 回答