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

问题描述:

我们被问到的许多问题都与两次事件之间经过多少时间有关(例如 - 患者被接纳,发生了一些评估)。一些事件发生多次。我如何才能找到每位患者就诊时发生事件的第一个日期和时间?从组内获取第一个日期和时间

模型中有一张名为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。

+2

如果您想要良好的性能,请将ActivityDateTime列添加到您的事实表中,并将AggregateFunction = Min度量值添加到它。这将比任何可能的MDX选项效率更高。 – GregGalloway

+0

我和Danylo都提出了一个最小聚合度量,并且它的效果很好!我仍然试图让我的SQL思想围绕多维概念进行。谢谢你们俩。 – buck

试试下面的代码:

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()函数结合来解析该值。