【问题标题】:SSAS Environment or CUBE creation methodologySSAS 环境或多维数据集创建方法
【发布时间】:2014-11-01 12:41:35
【问题描述】:

虽然我在 SQL Server 方面有比较好的暴露者,但在 SSAS 方面我还是个新手。

我们将在 SSRS 中创建一组报告,并将数据源作为 SSAS CUBE。

一些报告涉及来自至少 3 或 4 个表的数据,还涉及分组和 SQL 环境中所有可能的事情(例如查找一天的最大记录并将其与另外 4 个表连接并在顶部应用过滤逻辑它)

所以实际的问题是我是否需要在 Cube 中实现这些逻辑,或者让它们在 SQL 数据库中处理(使用 SSAS 中的命名查询)并将结果存储在 Cube 中,然后在报告中显示?我知道我的后一种选择将涉及创建更多的多维数据集,具体取决于正在开发的每个报告。

有人告诉我使用事务表中的数据创建多维数据集,并使用 MDX 查询(作为 SSRS 中的源)进行整个逻辑创建。我不确定这是否是一个可行的解决方案。

对此的任何帮助将不胜感激;感谢您阅读我的笔记。

阿鲁

编辑:我们正在使用 SQL Server 2012 版本进行开发。

【问题讨论】:

  • 感谢@Josh、Subhash 和 Alexander 的回复;非常感谢;

标签: sql sql-server reporting-services ssas olap-cube


【解决方案1】:

OLAP 多维数据集非常适合执行数据聚合,可以一次有效地对大多数列进行分组。您不应努力在命名查询或关系视图级别实现所有分组,因为这将阻止您深入查看多维数据集中的数据,并在处理多维数据集时导致关系数据库不必要的开销。

我会首先计划将最细粒度的数据从您的关系数据库中提取到您的多维数据集中,并且仅在数据量或处理时间受到关注时才在指定的查询或视图中执行过滤或分组。 SSAS 将执行一些默认的数据聚合,以允许在最分组的级别进行快速查询。

更复杂的问题,例如特定日期的 max(someColumn) 仍然可以通过使用不同的聚合在多维数据集中实现,但如果您只想通过一个函数 (MAX) 聚合到当天,您确实会遇到复杂的场景水平,然后通过其他维度的另一个函数(例如,对每个国家/地区每天的最大值求和)。在这种情况下,最好在命名查询或视图中执行 max-per-day 计算,然后将其加载到自己的度量值组中,然后由 SUM 聚合。

听起来您刚刚开始学习 OLAP,所以我鼓励您查看来自 Kimball Group(无从属关系)的资源,如果您有时间,还可以阅读这本出色的书“The数据仓库工具包”。至少,请研究维度建模技术,因为如果您在视图或命名查询中生成维度模型(可能是星型模式),您的多维数据集设计会容易得多。

【讨论】:

    【解决方案2】:

    所有的计算和分组都应该在数据库级别至少以视图的形式完成。 存储数据的方式主要有两种(MOLAP 和 ROLAP)。使用 MOLAP 存储模型来处理存储事务类数据的表。 客户对交易数据的期望(根据我的经验)将是基于时间维度了解销售。诸如获取上周或上个季度的总销售额之类的东西。等等。 MDX 脚本基本上是 Cube 可以理解的一种 SQL 脚本。不应该有任何逻辑。根据 SSRS 报告中选择的参数,应准备 MDX 查询。小计、平均值等小型分析函数可以通过MDX圆顶,但不能进行复杂的计算。

    【讨论】:

      【解决方案3】:

      如果您的模型不复杂,我会查看 BISM 表格。它将数据压缩并存储在内存中。至于数据处理,我建议将所有计算和分组保留在数据库层(创建视图)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多