计算每个开放时间间隔的平均销售额 MDX
Count the average sales per open hour interval MDX
我仍在学习 MDX,我想执行一个相当复杂的 (?) 查询。我发现 Date
和 Open 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]
导致了这些问题。
我目前正在 SSRS
和 SSMS
中测试此查询。
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]
)
我仍在学习 MDX,我想执行一个相当复杂的 (?) 查询。我发现 Date
和 Open 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]
导致了这些问题。
我目前正在 SSRS
和 SSMS
中测试此查询。
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]
)