我们得到的许多问题都与两次事件之间经过多长时间有关(例如 - 患者被录取,某些评估发生)。有些事件会多次发生。如何找到每次患者就诊时发生事件的第一个日期和时间?
在模型中有一个名为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。
答案 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()函数来解析值。