从组内获取第一个日期和时间

时间:2017-03-31 19:11:52

标签: mdx

我们得到的许多问题都与两次事件之间经过多长时间有关(例如 - 患者被录取,某些评估发生)。有些事件会多次发生。如何找到每次患者就诊时发生事件的第一个日期和时间?

在模型中有一个名为Clinical Queries的表。在该表中有一个名为Activity Date Time的列。有一个名为Date的计算列和另一个名为Time的基于活动日期时间的列。这些与日期维度表和时间维度表相关。

我设法构建了一个查询,它给了我最早的日期,它给了我最早的时间。但是,无论日期如何,它都会返回最早的时间。例如,如果患者进行了两次评估,一次是在2017年1月1日23:59,另一次是在2017年1月1日在00:01,则​​查询将于2017年1月1日00:01返回。

WITH
MEMBER [Measures].[FirstInterventionDate] AS (
    NonEmpty(existing{[Date].[Fiscal].[Date].MEMBERS}, {[Measures].[Clinical Queries Interventions Performed]}).Item(0).Name
)

MEMBER [Measures].[FirstInterventionTime] AS (
    NonEmpty(existing{[Time].[Time].[Time].MEMBERS}, {[Measures].[Clinical Queries Interventions Performed]}).Item(0).Name
)

SELECT {[Measures].[Clinical Queries Interventions Performed], [Measures].[FirstInterventionDate], [Measures].[FirstInterventionTime]} on 0,
    NON EMPTY([Clinical Queries].[Account Number].Children) ON 1
FROM (
SELECT { [Clinical Queries].[InterventionID].&[3000195],
    [Clinical Queries].[InterventionID].&[3000186],
    [Clinical Queries].[InterventionID].&[3000184],
    [Clinical Queries].[InterventionID].&[3000182],
    [Clinical Queries].[InterventionID].&[3000184] } ON 0
FROM (
SELECT { [Clinical Queries].[Account Number].&[ACCT992],
    [Clinical Queries].[Account Number].&[ACCT064] } ON 0
FROM [Model]
))

我需要更改以使其返回最早日期的最早日期和时间。对于上面的例子,它将是2017年1月1日23:59。

1 个答案:

答案 0 :(得分:2)

请尝试以下代码:

select 
    {[Clinical Queries].[Account Number].&[ACCT992],
     [Clinical Queries].[Account Number].&[ACCT064]} *
    {[Measures].[Clinical Queries Interventions Performed]} on 0,
    Generate(
        {[Clinical Queries].[InterventionID].&[3000195],
         [Clinical Queries].[InterventionID].&[3000186],
         [Clinical Queries].[InterventionID].&[3000184],
         [Clinical Queries].[InterventionID].&[3000182],
         [Clinical Queries].[InterventionID].&[3000184]},
        Head(
            NonEmpty(
                [Clinical Queries].[InterventionID].CurrentMember *
                [Date].[Fiscal].[Date].Members *
                [Time].[Time].[Time].Members,
                [Measures].[Clinical Queries Interventions Performed]
            ),
            1
        )
    ) on 1
from [Model]

您可能对性能不满意,所以我强烈建议您在DWH级别上移动逻辑:添加一个测量字段,如201703301020(2017年3月30日10:20) Min 聚合,您可以使用MDX计算的度量结合left()right()函数来解析值。