当一周在两个月之间时,如何将一周中的所有天数都包括在计算中?
How to include all the days of the week in a calculation when week is between two months?
我有一个 MDX 计算,除了一种情况外,它工作正常。
它正在汇总一周,看起来像这样:
with
MEMBER [Measures].[WTD]
as AGGREGATE( [Date].[Date].CURRENTMEMBER.Parent.CHILDREN, [Measures].[Survey Count] )
SELECT
NON EMPTY
{
[Measures].[Survey Count],
[Measures].[WTD]
} ON COLUMNS,
NON EMPTY
{
( [Date].[Date].[Day].ALLMEMBERS )
} ON ROWS
FROM [myCube];
周是指周日到周六。这就是需要的计算方式。
问题是星期天到星期六的月份有变化。因此,对于 2017 年 3 月的最后一个星期天到星期六,例如,倒数第二天是 3 月 31 日,最后一天是 4 月 1 日。在立方体中,这看起来像:第 13 周有 3 月 26 日到 3 月 31 日的值(六个天),然后第 13 周再次出现在四月下。这是 4 月下的第一个星期,第 13 周只有一天 - 4 月 1 日。然后第 14 周是接下来的 4 月,整整 7 天(4 月 2 日 - 4 月 8 日)。
多维数据集有一个日期层次结构,它下面有年、季度、月、周和日维度。
那么当一周分为两个月时,我如何修改此 MDX 以包括整周(周日到周六之间的所有 7 天)?
您所看到的行为的原因是您的 日期 维度的层次结构。例如。月份级别高于周级别,这意味着 .Parent 函数始终 returns .CurrentMember 月份中的星期几日期。
你有不同的选择来解决这个问题:
1)
您可以简单地使用MDX WTD()函数,您只需要正确配置Date维度,使属性具有正确的Type.
2)
您可以创建另一个日期层次结构,将 year/week 作为第一级,将日期作为第二级,如下所示:
- 年周(例如 Y2017/W51、Y2017/W52 等)
- 天(例如 2017-12-14、2017-12-15 等)
您现有的代码在这种情况下可以工作,您只需要引用这个新的层次结构。
3)
您还可以将工作日定义为 Day 属性的 属性,然后您可以使用现有的 Date 层次结构创建 WTD 度量,如下所示:
WITH
MEMBER [Measures].[WTD]
AS
AGGREGATE(
TAIL(FILTER( NULL:[Date].[Day].CurrentMember, [Date].[Day].Properties( "Weekday" )="Sunday" ), 1).Item(0) : [Date].[Day].CurrentMember,
[Measures].[Survey Count]
)
我有一个 MDX 计算,除了一种情况外,它工作正常。
它正在汇总一周,看起来像这样:
with
MEMBER [Measures].[WTD]
as AGGREGATE( [Date].[Date].CURRENTMEMBER.Parent.CHILDREN, [Measures].[Survey Count] )
SELECT
NON EMPTY
{
[Measures].[Survey Count],
[Measures].[WTD]
} ON COLUMNS,
NON EMPTY
{
( [Date].[Date].[Day].ALLMEMBERS )
} ON ROWS
FROM [myCube];
周是指周日到周六。这就是需要的计算方式。
问题是星期天到星期六的月份有变化。因此,对于 2017 年 3 月的最后一个星期天到星期六,例如,倒数第二天是 3 月 31 日,最后一天是 4 月 1 日。在立方体中,这看起来像:第 13 周有 3 月 26 日到 3 月 31 日的值(六个天),然后第 13 周再次出现在四月下。这是 4 月下的第一个星期,第 13 周只有一天 - 4 月 1 日。然后第 14 周是接下来的 4 月,整整 7 天(4 月 2 日 - 4 月 8 日)。
多维数据集有一个日期层次结构,它下面有年、季度、月、周和日维度。
那么当一周分为两个月时,我如何修改此 MDX 以包括整周(周日到周六之间的所有 7 天)?
您所看到的行为的原因是您的 日期 维度的层次结构。例如。月份级别高于周级别,这意味着 .Parent 函数始终 returns .CurrentMember 月份中的星期几日期。
你有不同的选择来解决这个问题:
1)
您可以简单地使用MDX WTD()函数,您只需要正确配置Date维度,使属性具有正确的Type.
2)
您可以创建另一个日期层次结构,将 year/week 作为第一级,将日期作为第二级,如下所示:
- 年周(例如 Y2017/W51、Y2017/W52 等)
- 天(例如 2017-12-14、2017-12-15 等)
您现有的代码在这种情况下可以工作,您只需要引用这个新的层次结构。
3)
您还可以将工作日定义为 Day 属性的 属性,然后您可以使用现有的 Date 层次结构创建 WTD 度量,如下所示:
WITH
MEMBER [Measures].[WTD]
AS
AGGREGATE(
TAIL(FILTER( NULL:[Date].[Day].CurrentMember, [Date].[Day].Properties( "Weekday" )="Sunday" ), 1).Item(0) : [Date].[Day].CurrentMember,
[Measures].[Survey Count]
)