从组内获取第一个日期和时间
问题描述:
我们被问到的许多问题都与两次事件之间经过多少时间有关(例如 - 患者被接纳,发生了一些评估)。一些事件发生多次。我如何才能找到每位患者就诊时发生事件的第一个日期和时间?从组内获取第一个日期和时间
模型中有一张名为Clinical Queries的表格。在该表中有一个名为“活动日期时间”的列。有一个名为Date的计算列和另一个名为Time的列表,其基于活动日期时间。这些与日期维度表和时间维度表相关。
我设法建立一个查询,给我最早的日期,它给了我最早的时间。但是,无论日期如何,它都会返回最早的时间。例如,如果患者进行了两次评估,一次于2017年1月1日23:59,另一次于2017年1月1日00:01,则查询将在00:01返回2017/1/1。
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]
))
我需要更改哪些内容才能返回最早的日期和时间。对于上面的例子,它将在23:59的1/1/2017。
答
试试下面的代码:
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)与最小聚合,您可以使用MDX计算度量与left()right()函数结合来解析该值。
如果您想要良好的性能,请将ActivityDateTime列添加到您的事实表中,并将AggregateFunction = Min度量值添加到它。这将比任何可能的MDX选项效率更高。 – GregGalloway
我和Danylo都提出了一个最小聚合度量,并且它的效果很好!我仍然试图让我的SQL思想围绕多维概念进行。谢谢你们俩。 – buck