我需要用立方体中的值计算过去7天的计数。
我写下一个MDX表达式:
Count
(
Filter
(
Descendants
(
[Date].[Date Hierarchy].CurrentMember.Lag(6)
:
[Date].[Date Hierarchy].CurrentMember
)
,[Measures].[Amount]
)
)
数据在日级别的层次结构中是正确的,但在月级,其他级别衡量的是过去7个月的值。
UPDATE 我想显示一个月的最后一天的价值
例如:
日期| value1 |值2
2017-01-01 | 5 | 4
2017-01-02 | 4 | 3
2017-01-03 | 3 | 2
.....
2017-01-31 | 7 | 1< ---月级别我不会显示这个
答案 0 :(得分:0)
您可以在lastchild
的帮助下获得该月的最后七天。它将帮助您获得本月的最后一天。因此,对于月份级别,您可以使用:
Count (
Filter (
{[Date].[Date Hierarchy].CurrentMember.lastchild.Lag(6) :
[Date].[Date Hierarchy].CurrentMember.lastchild}
,[Measures].[Amount]
)
)
此处使用DESCENDANTS不合适,因为它返回包含该层次结构的所有子成员的集合。
答案 1 :(得分:0)
未经测试但可能类似以下内容
COUNT(
//to find the members with values use nonempty
NONEMPTY(
//find the last date in a set
TAIL(
EXISTS( //find the dates associated to the currentmember
[Date].[Date Hierarchy].CurrentMember
,[Date].[Date Hierarchy].[Date Hierarchy].MEMBERS
)
).ITEM(0).LAG(6)
:
TAIL( //find the last date
EXISTS( //find the dates associated to the currentmember
[Date].[Date Hierarchy].CurrentMember
,[Date].[Date Hierarchy].[Date Hierarchy].MEMBERS
)
).ITEM(0)
, [Measures].[Amount]
)
)
我对Adventure Works多维数据集进行了测试。
如果选择月份,则为
WITH
MEMBER [Measures].[X] AS
Count
(
NonEmpty
(
Tail
(
Exists
(
[Date].[Calendar].[Date].MEMBERS
,[Date].[Calendar].CurrentMember
)
).Item(0).Lag(6)
:
Tail
(
Exists
(
[Date].[Calendar].[Date].MEMBERS
,[Date].[Calendar].CurrentMember
)
).Item(0)
,[Measures].[Internet Sales Amount]
)
)
SELECT
NON EMPTY
{
[Measures].[Internet Sales Amount]
,[Measures].[X]
} ON 0
,NON EMPTY
[Date].[Calendar].[Month].&[2007]&[7]
:
[Date].[Calendar].[Month].&[2008]&[6] ON 1
FROM [Adventure Works];
按预期返回7:
如果我在轴1上更改为每日:
WITH
MEMBER [Measures].[X] AS
Count
(
NonEmpty
(
Tail
(
Exists
(
[Date].[Calendar].[Date].MEMBERS
,[Date].[Calendar].CurrentMember
)
).Item(0).Lag(6)
:
Tail
(
Exists
(
[Date].[Calendar].[Date].MEMBERS
,[Date].[Calendar].CurrentMember
)
).Item(0)
,[Measures].[Internet Sales Amount]
)
)
SELECT
NON EMPTY
{
[Measures].[Internet Sales Amount]
,[Measures].[X]
} ON 0
,NON EMPTY
[Date].[Calendar].[Date].&[20070701]
:
[Date].[Calendar].[Date].&[20080630] ON 1
FROM [Adventure Works];