将 LastNotEmpty 查询转换为成员

Convert LastNotEmpty Query to Member

我想报告数据可用性的状态。最大日期特定度量(组)已加载数据。这是我随后会尝试将其合并到每个报告中的功能。理论上每个度量都可以在日期维度中有另一个“最后一个有数据的成员”,但是目前可以将其简化为每个度量组一个度量或整个度量组的最大值。

我写了一个 MDX 查询,它给了我相关的答案。然而,为了利用更容易的维护,我正在努力将该信息作为计算成员合并到多维数据集本身中。仅在每个闰年左右使用 MDX,我未能成功地将查询转换为计算成员定义。

// Repro-Query on Adventure Works
// with Adventure Works 2012 EE result should be "July 31, 2008"
// contrasted to last date in date dimension which is "December 31,2010
WITH Member [Measures].[Data Availability] AS 
                [Date].[Calendar].CurrentMember.Name
SELECT
    {       
        [Measures].[Data Availability]
    } ON COLUMNS
FROM
    [Adventure Works]
WHERE
{
    TAIL(
        FILTER
        (
            [Date].[Date].Members,
            [Measures].[Internet Sales Amount] >0
        )
    ,1 
    )
}

结果应与查询中的结果相同,但封装在一个计算的度量语句中。请记住,我不需要度量值,只需要日期维度中包含数据的最后一个维度元素的名称。

关于代码应该是这样的:

WITH Member [Measures].[Data Availability] AS 
                <your great translation to a member > 
SELECT
    {       
        [Measures].[Data Availability]
    } ON COLUMNS
FROM
    [Adventure Works]

欢迎提出不同的方法来获得问题的答案,例如使用数据计算最后一个成员的性能更好的方法。

感谢您提出很好的问题并使用 Adventure Works。不管一些评论者怎么说,这是在这里获得答案的好方法。

试试这个。 Tail 函数 returns 一个集合,因此 .Item(0).Item(0) 通过选择第一个元组和第一个成员将它变成一个成员。

WITH Member [Measures].[Data Availability] AS 
    TAIL(
        FILTER
        (
            [Date].[Date].Members,
            [Measures].[Internet Sales Amount] >0
        )
    ,1 
    ).Item(0).Item(0).Name
SELECT
    {       
        [Measures].[Data Availability]
    } ON COLUMNS
FROM
    [Adventure Works]