我的等级时间为[年]。[月]
我希望获得几年和几个月的行,回到六个时期,但我也希望展示一年。
所以我可以这样做,使用滞后来查找一组月份,然后是Ascendants。
SELECT
NON EMPTY {[Measures].[modality]} ON COLUMNS,
NON EMPTY {Hierarchize(Generate({[Time.CalYearMonth1].[2016].[1].lag(6):[Time.CalYearMonth1].[2016].[1]},ASCENDANTS([Time.CalYearMonth1].CurrentMember)))}
ON ROWS
FROM [mt_report]
当我这样做的时候,我会找到一年的会员,这基本上是我不想要的一排。
在Pentaho,这给出了结果:
Axis #0:
{}
Axis #1:
{[Measures].[modality]}
Axis #2:
{[Time.CalYearMonth1].[All Time.CalYearMonth1s]}
{[Time.CalYearMonth1].[2015]}
{[Time.CalYearMonth1].[2015].[7]}
{[Time.CalYearMonth1].[2015].[8]}
{[Time.CalYearMonth1].[2015].[9]}
{[Time.CalYearMonth1].[2015].[10]}
{[Time.CalYearMonth1].[2015].[11]}
{[Time.CalYearMonth1].[2015].[12]}
{[Time.CalYearMonth1].[2016]}
{[Time.CalYearMonth1].[2016].[1]}
Row #0: 0.95
Row #1: 1.11
Row #2: 1.08
Row #3: 1.14
Row #4: 1.13
Row #5: 1.16
Row #6: 1.15
Row #7: 1.15
Row #8: 1.11
Row #9: 1.17
我不知道如何避免每年的摘要。
答案 0 :(得分:0)
ASCENDANTS
定义似乎表明它将返回上述所有级别的成员 - 这将包括您希望避免的所有级别。
你可以尝试Ancestors
来获得年份:
SELECT
NON EMPTY
{[Measures].[modality]} ON COLUMNS
,NON EMPTY
{
Hierarchize
(
{
[Time.CalYearMonth1].[2016].[1].Lag(6) : [Time.CalYearMonth1].[2016].[1]
,Generate
(
{
[Time.CalYearMonth1].[2016].[1].Lag(6) : [Time.CalYearMonth1].[2016].[1]
}
,Ancestors
(
[Time.CalYearMonth1].CurrentMember
,1 //<<<change this to the distnace year is away from month in the levels of the user hierarchy
)
)
}
)
} ON ROWS
FROM [mt_report];
似乎在AdvWrks
中测试好了:
SELECT
{} ON 0
,Hierarchize
(
{
[Date].[Calendar].[Month].&[2010]&[4].Lag(6)
:
[Date].[Calendar].[Month].&[2010]&[4]
,Generate
(
{
[Date].[Calendar].[Month].&[2010]&[4].Lag(6)
:
[Date].[Calendar].[Month].&[2010]&[4]
} AS S
,Ancestors
(
s.CurrentMember
,3 //<<< distance in advwrks between month and year levels
)
)
}
) ON 1
FROM [Adventure Works];
返回: