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

Mdx 从组中获取第一个日期和时间,mdx,Mdx,我们收到的许多问题都与两个事件之间经过的时间有关(例如,患者入院,进行了一些评估)。有些事件发生多次。如何查找每次患者就诊时发生事件的第一个日期和时间 模型中有一个名为Clinical Queries的表。该表中有一个名为“活动日期时间”的列。有一个名为Date的计算列和另一个名为Time的计算列,它们基于活动日期时间。它们与日期维度表和时间维度表相关 我已经成功地构建了一个查询,它给了我最早的日期,也给了我最早的时间。但是,无论日期如何,它都返回最早的时间。例如,如果患者执行了两次评估,一次是

我们收到的许多问题都与两个事件之间经过的时间有关(例如,患者入院,进行了一些评估)。有些事件发生多次。如何查找每次患者就诊时发生事件的第一个日期和时间

模型中有一个名为Clinical Queries的表。该表中有一个名为“活动日期时间”的列。有一个名为Date的计算列和另一个名为Time的计算列,它们基于活动日期时间。它们与日期维度表和时间维度表相关

我已经成功地构建了一个查询,它给了我最早的日期,也给了我最早的时间。但是,无论日期如何,它都返回最早的时间。例如,如果患者执行了两次评估,一次是2017年1月1日23:59,另一次是2017年1月2日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。

请尝试以下代码:

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级别:使用Min聚合添加一个类似201703301020(2017年3月30日10:20)的度量字段,您可以使用MDX计算的度量值结合左()右()解析值函数。

如果希望获得良好的性能,请将ActivityDateTime列添加到事实表中,并在其上放置AggregateFunction=Min度量值。这将比任何可能的MDX选项都有效。我按照您和Danylo的建议添加了一个最小聚合度量,它工作得很好!我仍在努力让我的SQL思维围绕多维概念。谢谢你们两位。