【问题标题】:Add attribute to cube and reprocess without original database将属性添加到多维数据集并在没有原始数据库的情况下重新处理
【发布时间】:2012-10-30 22:29:59
【问题描述】:

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

所以我的脑海中出现了一个问题,我们是否需要那个原始数据库来为这个多维数据集添加一个新属性?我们是否可以在没有立方体原始数据源的情况下向多维数据集添加新属性并仅处理该属性?

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

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

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

“维度[合作伙伴]无法保存文件系统错误无法复制 文件 C:\\MYSQLSERVER\OLAP\DATA\2013_Cube.db\\.dim\.dstore 到 C:\\MYSQLSERVER\OLAP\DATA\2013_Cube.db\\.dim\.dstore 文件存在”

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

【问题讨论】:

    标签: sql sql-server ssas sql-server-2012 xmla


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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 中获取数据透视表数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        相关资源
        最近更新 更多