【问题标题】:What is the best approach to get from relational OLTP database to OLAP cube?从关系 OLTP 数据库到 OLAP 多维数据集的最佳方法是什么?
【发布时间】:2010-11-05 01:37:19
【问题描述】:

我有一个相当标准的 OLTP 规范化数据库,我意识到我需要在数据的不同维度上做一些复杂的查询、平均值、标准差。

所以我转向了 SSAS 和 OLAP 多维数据集的创建。

但是,要创建多维数据集,我认为我的数据源结构需要采用“星形”或“雪花”配置(我认为现在不是)。

使用 SSIS 在我的主 OLTP 数据库上执行某种 ETL 过程到另一个关系数据库中的正常过程是正常的吗OLAP 多维数据集?

谢谢

【问题讨论】:

    标签: database ssis ssas olap


    【解决方案1】:

    是的,这是基本思想。您将高度规范化的 OLTP 数据库反规范化为多维数据集,以便对数据进行切片和切块,然后在其上呈现报告。逻辑设计技术称为维度建模。在Kimball Group 上有大量关于dimensional modeling 的重要信息。 Ralph Kimball 的books on the subject 也很出色。如果您想了解有关 BI 工具本身的更多信息,请查看有关 SSIS、分析服务等的 virtual labs

    【讨论】:

    • “你将高度规范化的 OLTP 数据库反规范化为立方体”——这在使用 Kimball 维度建模技术时并不完全正确
    【解决方案2】:

    答案是:是的,但是。

    SSAS 中的维度具有属性之间的关系,可以使用一系列字段来筛选切片依据。这些关系可以是分层的(不止一层深度 - 一个属性可以有父级和子级。您还可以建立下钻路径(在 SSAS 中称为层次结构),其作用类似于属性但具有引导下钻。

    为了做到这一点,您需要在数据库中提供存在严格层次关系的键(即,键不能具有模糊关系,其中一个孩子可以有多个父级)。请注意,这并不是故事的全部,但目前已经足够接近现实了。

    这些层次结构可以由系统从平面数据结构构建,也可以通过在底层数据源视图中标记关系的雪花呈现(DSV 是多维数据集元数据的一部分,可用于以某种方式处理数据类似于数据库视图)。

    雪花是 3NF-ish 架构(它不一定必须是 3NF - 您可以在实践中将其部分展平),只有 1:M 关系。 SSAS 可以支持一些其他维度结构,例如父子(具有递归自连接的父子关系)和 M:M 维度(M:M 关系 - 就像它们听起来的样子)。这种类型的维度比较复杂,但可能对您有用。

    如果您的源数据中的键可以与雪花具有等效的数据语义,那么您可以通过源系统上的一系列数据库视图来填充您的多维数据集,这些视图以足够类似雪花的形式呈现基础数据用于多维数据集尺寸的格式(我实际上已经做过几次)。大量使用合成密钥的架构更有可能很好地解决这个问题。

    如果您的供应商或其他方不允许您将视图添加到源数据库,您可以改用数据源视图。 DSV 可以具有从数据库查询填充的称为“命名查询”的虚拟表。

    事实表连接到维度。在 SSAS2005+ 中,您可以在一个维度内以不同粒度连接不同的事实表。在数据仓库中我通常不会对此有太多用处,但如果您尝试使用源数据而不必过多地处理它,此功能可能会很有用。

    如果这不起作用,那么您可能需要编写一个 ETL 流程来填充星型或雪花模式。

    一些附带条件:

    1. 可以使多维数据集在实时模式下运行,它们只需向基础数据发出查询。这可能会导致对源数据的查询效率低下,因此不建议这样做,除非您真的确信自己知道自己在做什么。

    2. 根据 (i),您可能无法将多维数据集用作应用程序中屏幕的数据源。如果您需要计算用户希望在屏幕上看到的内容的平均值,您可能必须在屏幕后面的存储过程中计算它。

    3. 如果您这样做,请设置一个复制的数据库并从中填充多维数据集。定期刷新此数据库,以便您的 ETL 流程可以从内部一致的数据集运行。如果您从实时数据库运行,您可能会冒着稍后填充某些项目的风险,这些项目取决于运行相应流程后创建的记录。

      您可能遇到运行维度加载的情况,然后将新数据输入系统。当事实表加载运行时,它现在包含依赖于尚未加载的维度数据的数据。这将破坏多维数据集并导致加载过程失败。批量刷新复制数据库以运行 ETL 或消除多维数据集负载将缓解此问题。

      如果您没有复制数据库的选项,您可以为丢失的数据设置更多松弛策略。

    4. 如果您的基础生产数据存在严重的数据质量问题,它们将反映在多维数据集中。 GIGO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多