【问题标题】:How to make aggragate tables by date levels如何按日期级别制作汇总表
【发布时间】:2016-10-07 14:11:35
【问题描述】:

我有日期维度的事实表,级别为 YearQuarterMonthDayHour,两个度量 [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] 之类的值以表示年份级别等。我认为在多维数据集中进行此度量,但在这种情况下,此度量将仅适用于汇总表.我认为这是不正确的方式。

【问题讨论】:

    标签: mdx mondrian


    【解决方案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 等)。这可能是原因。如果您需要总和和平均值,您可能需要为计数添加另一个度量,并且可能已经计算了带有总和/计数的平均值的度量。但我不确定这个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多