Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas 时间不在轴上时平行周期问题_Ssas_Mdx_Olap - Fatal编程技术网

Ssas 时间不在轴上时平行周期问题

Ssas 时间不在轴上时平行周期问题,ssas,mdx,olap,Ssas,Mdx,Olap,此查询中计算的成员[Amount LM]=上月金额有什么问题?如果我在行上指定时间,这似乎是可行的,但如果我不指定,则失败,即使我在where子句中有一个日期 具有 成员[金额LM]为 [措施][数额], 平行周期 [日期][年-季度-月-日期-层次结构][年和月], 1. [日期][年-季度-月-日期-层次结构].CurrentMember 选择 列上的{[Amount LM],[Measures].[Amount]}, [度量值类型].[名称]和[22]-与[度量值].[金额]无关;在实际情

此查询中计算的成员[Amount LM]=上月金额有什么问题?如果我在行上指定时间,这似乎是可行的,但如果我不指定,则失败,即使我在where子句中有一个日期

具有 成员[金额LM]为 [措施][数额], 平行周期 [日期][年-季度-月-日期-层次结构][年和月], 1. [日期][年-季度-月-日期-层次结构].CurrentMember 选择 列上的{[Amount LM],[Measures].[Amount]}, [度量值类型].[名称]和[22]-与[度量值].[金额]无关;在实际情况下用作测量开关,但为简单起见,此处进行了调整 -注释掉要失败的下一行 *[日期].[年-季度-月-日期-层次结构].[年和月] 成排 从[立方体] 其中【日期】【年份号】、【2019年】 ; 工作案例中的结果:

                           Amount LM  |  Amount
    Costs  |    Jan 2019  | (null)    |  109600
    Costs  |    Feb 2019  | 109600    |  218300.5
    Costs  |    Mar 2019  | 218300.5  |  392250
    Costs  |    Apr 2019  | 392250    |  206800
    Costs  |    May 2019  | 206800    |  174700
    Costs  |    Jun 2019  | 174700    |  298400
    Costs  |    Jul 2019  | 298400    |  264550
    Costs  |    Aug 2019  | 264550    |  424100
    Costs  |    Sep 2019  | 424100    |  129650
    Costs  |    Oct 2019  | 129650    |  330050
    Costs  |    Nov 2019  | 330050    |  (null)
    Costs  |    Dec 2019  | (null)    |  (null)
没有

* [Date].[Year - Quarter - Month - Date - Hierarchy].[Year and Month] 
部分,金额为空

          |Amount LM| Amount
    Costs | (null)  | 2548400.5

你的计算没有问题。要理解空值,您需要知道

平行周期是如何工作的 UserHierarchy上的CurrentMember如何工作 当你有

[日期].[年-季度-月-日期-层次结构].[年和月]

在您的行轴中

[日期][年-季度-月-日期-层次结构].CurrentMember

currentmember表达式返回用户层次结构[Year-Quarter-Month-Date-HIERARCHY]的当前成员。然后,平行周期函数尝试查找与级别[年和月]相关的表亲成员

当您从行中删除用户层次结构时,currentmember返回2019,这是级别YEAR Number的成员,因此并行期间无法找到与级别[年和月]相关的同级,因为传递的currentmember高于指定的级别。若要选中,请将where中的年份替换为month member,并且行上没有日期,则该选项将起作用。要解决此问题,您需要提供一个备用逻辑,以防传递了更高级别的成员或其他边缘情况使用下面的脚本,它将在任何边缘情况下返回100

WITH

MEMBER [Amount LM] as
case when [Date].[Year - Quarter - Month - Date - Hierarchy].CurrentMember.level.name <>"Year and Month" then 100
else 
(
    [Measures].[Amount],

    ParallelPeriod (
        [Date].[Year - Quarter - Month - Date - Hierarchy].[Year and Month],
        1,
        [Date].[Year - Quarter - Month - Date - Hierarchy].CurrentMember
    )
)
end
结果

现在让我们评论一下

[日期][日历][月份]

结果 请注意ParallelPeriod返回的Null,现在让我们替换where from Month中的年份。这使ParalElPeriod能够返回有用的内容

WITH
MEMBER [Amount LM] as
(
    [Measures].[Internet Sales Amount],
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember)
)

MEMBER [Amount LM_ParallelPeriodName] as
(
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember).name
)

MEMBER [Amount LM_CalendarCurrentmember] as
(
    [Date].[Calendar].currentmember.name
)

SELECT 
{[Amount LM], [Measures].[Internet Sales Amount],[Amount LM_ParallelPeriodName],[Amount LM_CalendarCurrentmember]} ON  COLUMNS,
[Product].[Category].&[1] * [Date].[Calendar].[Month]
ON rows
from [Adventure Works]
WHERE [Date].[Month Name].[September 2013]
结果

下面的内容有用吗?我想我现在明白了。谢谢
WITH
MEMBER [Amount LM] as
(
    [Measures].[Internet Sales Amount],
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember)
)

MEMBER [Amount LM_ParallelPeriodName] as
(
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember).name
)

MEMBER [Amount LM_CalendarCurrentmember] as
(
    [Date].[Calendar].currentmember.name
)

SELECT 
{[Amount LM], [Measures].[Internet Sales Amount],[Amount LM_ParallelPeriodName],[Amount LM_CalendarCurrentmember]} ON  COLUMNS,
[Product].[Category].&[1] --* [Date].[Calendar].[Month]
ON rows
from [Adventure Works]
WHERE [Date].[Calendar Year].&[2013]
WITH
MEMBER [Amount LM] as
(
    [Measures].[Internet Sales Amount],
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember)
)

MEMBER [Amount LM_ParallelPeriodName] as
(
    ParallelPeriod ([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember).name
)

MEMBER [Amount LM_CalendarCurrentmember] as
(
    [Date].[Calendar].currentmember.name
)

SELECT 
{[Amount LM], [Measures].[Internet Sales Amount],[Amount LM_ParallelPeriodName],[Amount LM_CalendarCurrentmember]} ON  COLUMNS,
[Product].[Category].&[1] * [Date].[Calendar].[Month]
ON rows
from [Adventure Works]
WHERE [Date].[Month Name].[September 2013]