计算每个开放时间间隔的平均销售额 MDX

Count the average sales per open hour interval MDX

我仍在学习 MDX,我想执行一个相当复杂的 (?) 查询。我发现 DateOpen hour time 的每个组合都使用以下方式进行销售:

 SELECT NON EMPTY 
    { 
        [Measures].[Quantity] 
    } ON COLUMNS, 
 NON EMPTY 
    {   
        (
            [Dim Date].[Calender].[Date].ALLMEMBERS 
            ,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS 
        ) 
    } ON ROWS 
 FROM 
    ( SELECT 
        ( 
            { 
                (
                    [Dim Store2].[Store Name].&[ActualStoreName]
                    ,[Dim Date].[Calender].[2014]
                ) 
            } 
        ) ON COLUMNS 
    FROM [iceCube]
    ) 

我的结果集变成了这样:

                                Quantity
 2014-11-07     11:00 - 11:59       1
 2014-11-07     12:00 - 12:59       10
 2014-11-08     11:00 - 11:59       3
 2014-11-08     12:00 - 12:59       2
 2014-11-10     13:00 - 13:59       1

这就是我现阶段想要的。然而,从上面的结果集中得到一个小时之间的平均值是这样的:

                    Average
 11:00 - 11:59      2
 12:00 - 12:59      6
 13:00 - 13:59      1

是一个连接我不明白我会如何进行。

我想查找 2014 年的平均销售额,因为我想在 SSRS 中创建一个图表,使用特定周的销售额作为 SSRS 中的柱形图,同时将 2014 年的平均销售额线作为单独的柱形图线。这也使事情变得复杂,因为我需要进行第一个查询(尽管是一周一次,而不是现在的 2014 年),以及同一数据集中 2014 年的平均值,我不知道该怎么做。

我认为查找 2014 年平均销售额的查询必须在 SSAS 中作为计算度量进行,然后在 SSRS 中我可以尝试查找本周的销售额和2014 年同一数据集中的平均值。

有人对此有任何想法吗?

此致,

EDIT

运行 GregGalloway 的回答我得到了这个输出:

                        Quantity    YearlyHourAvg
2014-01-01  09:00-09:59 (null)      #Error
2014-01-01  10:00-10:59 (null)      #Error
.           .           .           .           
.           .           .           .
.           .           .           .
2014-12-31 21:00-21:59  (null)      #Error

(其中的点表示它像行一样继续),即查询给出从一月的第一天到最后一天的每个 Open Hour Bucket 值。

当我尝试 运行 查询时,它实际上只使用了 With MEMBER AS... 和原始查询。 但是Select 子句中添加 [Measures].[YearlyHourAvg] 导致了这些问题。

我目前正在 SSRSSSMS 中测试此查询。

EDIT2

可能我原文没说清楚post,但我需要的是per *time interval*的平均值,而不是per time *and* date的平均值。 IE。我需要时间跨度 09:00-09:59,10:00-10:59...

的平均销售额

尝试以下操作。它应该添加一个新列,这是整个 2014 年该小时的平均值。平均值应该是在那个小时内有任何销售的每天的平均值。如果您想要按 2014 年的天数计算的简单平均值,请回信,我们可以讨论。如果您对我所做的更改有疑问,请询问。

WITH
MEMBER [Measures].[YearlyHourAvg] as
 Avg(
  Descendants(
   [Dim Date].[Calender].[2014],
   [Dim Date].[Calender].[Date]
  ),
  [Measures].[Quantity]
 )
 SELECT
    { 
        [Measures].[Quantity],
        [Measures].[YearlyHourAvg] 
    } ON COLUMNS, 
 NonEmpty(
    {   
        (
            [Dim Date].[Calender].[Date].ALLMEMBERS 
            ,[Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS 
        ) 
    } ,
   [Measures].[Quantity]
  )
 ON ROWS 
 FROM 
    ( SELECT 
        ( 
            { 
                (
                    [Dim Store2].[Store Name].&[ActualStoreName]
                    ,[Dim Date].[Calender].[2014]
                ) 
            } 
        ) ON COLUMNS 
    FROM [iceCube]
    )