sql 查询聚合与聚合和查询 OLAP 多维数据集之间的区别

Difference between sql query aggregation and aggegration and querying an OLAP cube

我有一个关于构建 OLAP 多维数据集与在数据库 table 中聚合数据以查询 6 个月的数据然后归档 sql 的优点的查询table 稍后用于分析目的。

哪个更好,table 或 OLAP 立方体?以及为什么因为我也可以在我的 table 中聚合和保存数据,并在需要时查询聚合数据。

简短版本:像许多开发决策一样,视情况而定。

长版: 我不会说一个比另一个 "better" - 只是两者有不同的用途,一个或另一个可能是更好的解决方案取决于需求。

如果您有一些需要特定聚合的特定报告,那么对于所有相关人员来说,将这些信息聚合到 table 或视图中,然后将您的报告指向该信息可能会更简单、更容易。

例如,如果您知道您的用户只需要针对一组特定参数的月度报告 - 例如,您的销售部门可能需要每个销售员销售额的月度值 - 那么您最好的选择可能是将其汇总并将其弹出到报告中,他们可以在报告中 select 月份和销售人员,并获得他们想要的数字。

这样做的好处可能是它可以快速开发并提供给您的用户,没有太多时间花在测试上,因为只有几个数字需要检查,等等。您的用户也不需要花时间trained/learning 使用多维数据集 - 人们通常很容易上手和使用报表。

但是,如果您的用户希望能够根据他们自己的条件进行更多的开放式分析,那么每次他们有新需求时您都需要离开并开发报告就没有多大用处。您的数据库可能开始变得非常相似但不同 tables 充满聚合金额。您可能 运行 遇到由于某种原因一份报告最终与另一份报告不一致的问题 - 您可能会发现您在每份报告中一遍又一遍地处理相同的数据质量问题。

在这种情况下,在用户想要分析的最低粒度的数据之上开发一个多维数据集可能更有意义。通过这种方式,他们基本上可以自助服务,而不是每次需要一组新的聚合数据时都与您联系。他们可以使用多个不同的 "parameters"(OLAP 世界中的维度)对数据进行切片和切块,而不受报告性质的限制。

不过,即使您有一个多维数据集,聚合数据有时仍然会发挥作用。有时可以通过将数据聚合到特定级别并将其保存在物理 table 中并让您的 OLAP 工具使用该级别的物理聚合数据而不是使用其自己的聚合来提高性能 - 但这是一个优化步骤需要仔细考虑,看看它是否对性能有益,space 与性能回报是否值得等。如果你刚刚开始看,我不会担心这方面OLAP,但为了完整起见想把它记下来。

为了补充 Jo 的出色回答,请考虑需要汇总和比较的事实的粒度。如果您有按产品划分的每日销售额,但按月份和产品类别制定预算,则您将需要一个基于销售额的汇总事实 table 以便比较预算。这将进一步表示为您的 OLAP 数据库中的两个多维数据集 - 销售多维数据集和预算多维数据集。

如果有涉及特定聚合数据的非常常规的用例,并且此聚合数据需要一段时间才能从 sql 数据库 table 到 return,那么多维数据集可能会有所帮助.

如果您的数据库 table 数据需要以多种方式进行切片和切块 在聚合级别 那么绝对有一个很好的论据开始玩 olap 个立方体。

sums数据而言olap是一个很棒的聚合工具。不过,我不相信它是处理不同计数的最佳工具,所以如果您的要求包括很多不同计数,那么也许可以看看其他地方。您可以选择 Tabular/PowerPivot/DAX 吗?