专家们,
我正在使用 SQL SSAS 标准。2017 年,最后想要创建一个计算成员,如果最后一个现有数据是今天,则返回我的数据的上个月的一天或当天。(=> 如果今天是 8 月 31 日,我想检索我的数据的 8 月 31 日,否则如果今天是 8 月 30 日,则检索 7 月 31 日)
为了开发这个成员,我目前正在 SQL Server 中创建一个 MDX 查询。我很难理解什么是真正的“元组集表达式”(因为 TAIL() 函数应根据 MSDN 返回一个子集(ergo 集))但实际上我在玩弄 .Item(0 ) 函数对其结果。在 MSDN 中,我找不到有关“元组集”以及如何使它们做的信息,我想要什么。
我的日期维度有一个层次结构 JMT(年 | 月 | 日 | DATE 类型的日期键)。
要接收叉积的最新日期成员,我正在使用 TAIL(NONEMPTY(Date...Members, { (DimX.&.. , DimY.&.. , DimZ.&..) })) 表达式工作正常。
但是如何在今天或上个月的日期之间进行选择?
我在 2 月(2)日的测试用 MDX 如下:
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) 的“31”成员。预计:2 月 29 日。
我想,这可能是数据类型和 .Item(0) 返回的实际值的问题。但是如果我想使用 .Properties('Date Key', TYPED) 它会声明“找不到日期键维度属性。见下图。
在 DateDim 的图像中,它应该是蓝色区域中的“DateDim.JMT”;-)。
你有什么建议吗?谢谢你,科特