sql查询聚合与聚合和查询OLAP多维数据集的区别
Posted
技术标签:
【中文标题】sql查询聚合与聚合和查询OLAP多维数据集的区别【英文标题】:Difference between sql query aggregation and aggegration and querying an OLAP cube 【发布时间】:2015-05-25 14:18:16 【问题描述】:我有一个关于构建 OLAP
多维数据集与在数据库表中聚合数据以进行查询的优势的查询,比如 6 个月的数据,然后归档 sql
表以用于分析目的。
哪个更好,table 还是 OLAP
cube?以及为什么,因为我也可以在我的表中聚合和保存数据,并在需要时查询聚合数据。
【问题讨论】:
绝对是一个基于意见的问题,但同样有趣。 【参考方案1】:短版:像许多开发决策一样,视情况而定。
长版:我不会说一个比另一个“更好” - 只是这两个有不同的用途,一个或另一个可能是更好的解决方案,具体取决于要求是。
如果您有一些需要特定聚合的特定报告,那么对于所有相关人员来说,只需将这些信息聚合到表格或视图中,然后将您的报告指向那个位置,可能会更简单、更容易。
例如,如果您知道您的用户只需要针对特定参数集的月度报告 - 例如,您的销售部门可能想要每个销售人员的月销售额值 - 那么您最好的选择可能是汇总将其弹出并弹出到报告中,他们可以在其中选择月份和销售人员,并获得他们想要的数字。
这样做的好处可能是它可以快速开发并提供给您的用户,没有太多时间花在测试上,因为只需要检查几个数字等等。您的用户也不需要花时间接受培训/学习使用立方体 - 人们通常很容易掌握和使用报告。
但是,如果您的用户希望能够按照他们自己的条件进行更多的开放式分析,那么如果您每次有新需求时都需要离开并开发一份报告,那么这并没有多大用处。您的数据库可能会开始充满类似但不同的表格,其中充满了汇总金额。您可能会遇到一个报告因某种原因最终与另一个报告不一致的问题 - 您可能会发现您在每个报告中一遍又一遍地处理相同的数据质量问题。
在这种情况下,在用户想要分析的最低粒度的数据之上开发一个多维数据集可能更有意义。通过这种方式,他们基本上可以自助服务,而不是每次需要一组新的汇总数据时都与您联系。他们可以使用多个不同的“参数”(OLAP 世界中的维度)对数据进行切片和切块,而不受报告性质的限制。
即使您有一个多维数据集,聚合数据有时仍会发挥作用。有时可以通过将数据聚合到特定级别并将其保存在物理表中,并让您的 OLAP 工具使用该级别的物理聚合数据而不是使用自己的聚合来获得性能提升 - 但这是一个优化步骤,它将需要仔细考虑,看看它在性能方面是否有益,空间与性能的回报是否值得等。如果您刚开始研究 OLAP,我不会担心这方面,但想注意它为了完整性。
【讨论】:
【参考方案2】:要补充 Jo 的出色答案,请考虑需要汇总和比较的事实的粒度。如果您有按产品划分的每日销售额,但有按月和产品类别划分的预算,那么您将需要一个基于销售额的汇总事实表来比较预算。这将进一步表示为 OLAP 数据库中的两个多维数据集 - 销售多维数据集和预算多维数据集。
【讨论】:
【参考方案3】:如果存在涉及特定聚合数据的非常常规的用例,并且这些聚合数据需要一段时间才能从 sql 数据库表中返回,那么多维数据集可能会有所帮助。
如果您的数据库表数据需要在聚合级别进行切片和切块有很多潜在的方法,那么开始使用olap
多维数据集肯定是一个很好的论据。
就sums
的数据而言,olap 是一个很棒的聚合工具。我不相信它是不同计数的最佳工具,所以如果您的要求包括许多不同的计数,那么可能会寻找其他地方。你有Tabular/PowerPivot/DAX
的选项吗?
【讨论】:
以上是关于sql查询聚合与聚合和查询OLAP多维数据集的区别的主要内容,如果未能解决你的问题,请参考以下文章