以下是表达式: ClosingPeriod([期间]。[财政日期]。[日期],[期间]。[财政日期]。现在会员)
有谁可以建议为什么它可能会返回空白?
更新完整脚本:
CASE
ClosingPeriod(
[Date].[Fiscal].[DATE],
[Date].[Fiscal].CURRENTMEMBER
)
WHEN null THEN
MAX
(NONEMPTY
(
[Period].[Fiscal Dates].[Date].Members
*
[Measures].[Indiv Count]
),
[Period].[Date].currentmember.MEMBER_KEY
)
ELSE
ClosingPeriod(
[Date].[Fiscal].[DATE],
[Date].[Fiscal].CURRENTMEMBER
)
我正在使用此脚本为变量赋值。在此表达式中,始终执行null case。
答案 0 :(得分:1)
这不是一个完整的解决方案,而是更多找到它的方法。
在复杂的计算中,添加一些辅助措施只是为了理解发生了什么。我通常从大型计算的子表达式,向成员添加.Name
或在集合上应用SetToStr
来做出这些度量(假设它们具有合理的大小以便显示)。因此,测量定义如
[Date].[Fiscal].CURRENTMEMBER.Name
和
ClosingPeriod(
[Date].[Fiscal].[DATE],
[Date].[Fiscal].CURRENTMEMBER
).Name
如果您将这些度量添加到查询中,可以使其更加透明。
此外,在将WITH
语句放入计算脚本之前,通常可以尝试在SELECT
语句的{{1}}子句中进行在线计算,因为更改此更快并查看其直接结果变化
答案 1 :(得分:0)
需要查看您的所有脚本能够分析,因为该表达式的上下文在MDX
中计算很多。
在Adventure Works多维数据集上试试这个:
WITH
MEMBER [Measures].[Close] AS
CLOSINGPERIOD(
[Date].[Fiscal].[DATE]
, [Date].[Fiscal].CURRENTMEMBER
).Properties('key0', TYPED)
SELECT
{
[Measures].[Close]
} on 0,
{[Date].[Fiscal].[Fiscal Year].MEMBERS}
ON 1
FROM [Adventure Works]
以下返回似乎没问题:CLOSINGPERIOD
正在返回Date
层次结构的Fiscal
级别的最后一个成员:
包括CASE
结构我仍然得到回报:
WITH
MEMBER [Measures].[Close] AS
CASE
ClosingPeriod(
[Date].[Fiscal].[DATE],
[Date].[Fiscal].CURRENTMEMBER
).MEMBER_KEY
WHEN null THEN
MAX
(NONEMPTY
(
[Date].[Fiscal].[DATE].Members
*
[Measures].[Reseller Sales Amount]
),
[Date].[Fiscal].CURRENTMEMBER.MEMBER_KEY
)
ELSE
ClosingPeriod(
[Date].[Fiscal].[DATE],
[Date].[Fiscal].CURRENTMEMBER
).MEMBER_KEY
END
SELECT
{
[Measures].[Reseller Sales Amount],
[Measures].[Close]
} on 0,
{[Date].[Fiscal].[Fiscal Year].MEMBERS}
ON 1
FROM [Adventure Works]
要尝试在下面的Fiscal层次结构中强制为null,我在行上使用Calendar:
WITH
MEMBER [Measures].[Close] AS
CASE
WHEN
IsEmpty
(
ClosingPeriod
(
[Date].[Fiscal].[DATE]
,[Date].[Fiscal].CurrentMember
).Member_Key
)
THEN
Max
(
NonEmpty
(
[Date].[Fiscal].[DATE].MEMBERS * [Measures].[Reseller Sales Amount]
)
,[Date].[Fiscal].CurrentMember.Member_Key
)
ELSE
ClosingPeriod
(
[Date].[Fiscal].[DATE]
,[Date].[Fiscal].CurrentMember
).Member_Key
END
SELECT
{
[Measures].[Reseller Sales Amount]
,[Measures].[Close]
} ON 0
,{[Date].[Calendar].[Calendar Year].MEMBERS} ON 1 //][Date].[Fiscal].[Fiscal Year].MEMBERS
FROM [Adventure Works];
返回以下内容: