首页 > 解决方案 > 将 LastNotEmpty 查询转换为成员

问题描述

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

我写了一个 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]

在此处输入图像描述

随意提出不同的方法来获得问题的答案,例如更好地执行方法来计算带有数据的最后一个成员。

标签: sql-serverssassql-server-2014mdx

解决方案


感谢您提出的好问题和使用 Adventure Works。尽管有些评论者说了什么,但这是在这里获得答案的好方法。

尝试这个。该Tail函数返回一个集合,因此.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]

推荐阅读