如何按日期级别制作汇总表
Posted
技术标签:
【中文标题】如何按日期级别制作汇总表【英文标题】:How to make aggragate tables by date levels 【发布时间】:2016-10-07 14:11:35 【问题描述】:我有日期维度的事实表,级别为 Year
、Quarter
、Month
、Day
、Hour
,两个度量 [Measure].[kind sum]
、[Measure].[kind avg]
和每个日期级别的聚合表。例如,我有几年的时间,我需要平均天数。在这种情况下,查询将是这样的
WITH
MEMBER [Measures].[Pc in avg by day] AS AVG([Some dimension].Children * Descendants([Date].[2013] : [Date].[2016], [Date].[Day]), [Measures].[Pc in sum])
SELECT [Measures].[Pc in avg by day] ON COLUMNS
FROM [Some cube]
有一种方法可以优化查询。我需要在汇总表中保存诸如 [Pc in avg by day]
、[Pc in avg by month]
、[Pc in avg by quarter]
之类的值以表示年份级别等。我认为在多维数据集中进行此度量,但在这种情况下,此度量将仅适用于汇总表.我认为这是不正确的方式。
【问题讨论】:
【参考方案1】:我不完全理解你的问题。我想你想得到 [Pc in avg by month],[Pc in avg by Quarter] 和 [Pc in avg by day] 一样。如果是这种情况,将它们作为度量添加到多维数据集可能不是正确的方法。
正如您所说,您有一个带有度量 [Pc in sum] 的日期聚合表,您可以添加不同的月份、季度和年份聚合表,如果您需要 [Pc in avg by month],您可以按如下方式修改查询
WITH
MEMBER [Measures].[Pc in avg by month] AS AVG([Some dimension].Children * Descendants([Date].[2013] : [Date].[2016], [Date].[Month]), [Measures].[Pc in sum])
SELECT [Measures].[Pc in avg by month] ON COLUMNS
FROM [Some cube]
蒙德里安应该足够聪明,可以选择正确的聚合表来完成查询。在这种情况下每月汇总
【讨论】:
我会试试这个选项并告诉你结果。 他将只使用聚合来衡量总和。 我认为在多维数据集模式定义中,您必须指定聚合方法(sum、avg 等)。这可能是原因。如果您需要总和和平均值,您可能需要为计数添加另一个度量,并且可能已经计算了带有总和/计数的平均值的度量。但我不确定这个选项。以上是关于如何按日期级别制作汇总表的主要内容,如果未能解决你的问题,请参考以下文章