带有IIF和TAIL()函数的SSAS MDX问题
专家们 我使用的是SQL SSAS Std.2017,最后希望创建一个计算成员,返回我数据的最后一个月的日期或当前日期(如果最后一个现有数据是今天的)。 (=>如果今天是8月31日,我想检索8月31日的数据,否则如果今天是8月30日,检索7月31日) 为了开发此成员,我目前正在SQL Server中创建MDX查询。我很难理解什么是真正的“元组集表达式”(因为TAIL()函数将根据MSDN返回子集(ergo set)),但事实上,在处理.Item(0)函数的结果时,我收到了错误。在MSDN中,我找不到有关“元组集”的信息,也找不到如何使它们发挥作用的信息 My Date维度有一个层次结构JMT(Date类型的年|月|日|日期键) 为了接收交叉乘积的最新日期成员,我使用了TAIL(NONEMPTY(date…Members,{(DimX.&.,DimY.&.,DimZ.&.})表达式,它工作得很好 但是我如何在今天的日期和上个月的日期之间做出选择呢 我在2月(2日)的测试MDX如下:带有IIF和TAIL()函数的SSAS MDX问题,mdx,analysisservices,Mdx,Analysisservices,专家们 我使用的是SQL SSAS Std.2017,最后希望创建一个计算成员,返回我数据的最后一个月的日期或当前日期(如果最后一个现有数据是今天的)。 (=>如果今天是8月31日,我想检索8月31日的数据,否则如果今天是8月30日,检索7月31日) 为了开发此成员,我目前正在SQL Server中创建MDX查询。我很难理解什么是真正的“元组集表达式”(因为TAIL()函数将根据MSDN返回子集(ergo set)),但事实上,在处理.Item(0)函数的结果时,我收到了错误。在MSDN中,我找
SELECT {
IIF(
TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[2]) })).Item(0) --.Properties('Date Key', TYPED)
> NOW()
, TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[1]) }))
, TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[2]) }))
)
-- ,
-- TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[2]) })) } on columns
, { [Measures].[Turnover] } on rows
FROM [Finance]
结果:
正如你所看到的,IIF函数并不是我想要的。它假定.Item(0)大于NOW(),因此返回1月(1)的“31”成员。预计:2月29日
我想,可能是数据类型和.Item(0)返回的实际值有问题。但是如果我想使用.Properties('Date Key',TYPED),它会声明“找不到Date Key维度属性。请参见下图
在DateDim的图像中,蓝色区域应为“DateDim.JMT;”
你有什么建议吗?
谢谢,Cordt如果您切换此选项:
TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[2]) })).Item(0)
对以下方面有帮助吗
Tail
(
NonEmpty
(
[DateDim].[JMT].[T].MEMBERS
,{
(
[DimX].[X].&[200]
,[DimY].[Company].&[4499166]
,[DateDim].[JMT].[M].&[2020]&[2]
)
}
)
).Item(0).Item(0).MemberValue
如果切换此选项:
TAIL(NONEMPTY([DateDim].[JMT].[T].Members, { ([DimX].[X].&[200], [DimY].[Company].&[4499166], [DateDim].[JMT].[M].&[2020]&[2]) })).Item(0)
对以下方面有帮助吗
Tail
(
NonEmpty
(
[DateDim].[JMT].[T].MEMBERS
,{
(
[DimX].[X].&[200]
,[DimY].[Company].&[4499166]
,[DateDim].[JMT].[M].&[2020]&[2]
)
}
)
).Item(0).Item(0).MemberValue
悲伤不能解决我的问题,但它给了我新的想法和更好的理解,所以谢谢你的回复:-)悲伤不能解决我的问题,但它给了我新的想法和更好的理解,所以谢谢你的回复:-)