Sql MDX如何根据最新日期检索数据

Sql MDX如何根据最新日期检索数据,sql,sql-server,ssas,mdx,Sql,Sql Server,Ssas,Mdx,如何仅基于该特定记录的最新日期检索数据 SELECT [Measures].[Assessment Patients Detail] ON COLUMNS ,NON EMPTY ( [DimAssessment].[Assessment Text].&[Employee Wellness HRA] ,[DimAssessment].[Question Text].&[Do you use tobacco products?] ,[

如何仅基于该特定记录的最新日期检索数据

SELECT 
  [Measures].[Assessment Patients Detail] ON COLUMNS
 ,NON EMPTY 
    (
      [DimAssessment].[Assessment Text].&[Employee Wellness HRA]
     ,[DimAssessment].[Question Text].&[Do you use tobacco products?]
     ,[DimPatient].[Patient Key].[Patient Key]
     ,Generate
      (
        [DimAssessment].[Answer Text].[Answer Text].MEMBERS
       ,
          [DimAssessment].[Answer Text].CurrentMember
        * 
          Tail
          (
            NonEmpty
            (
              [DimDate].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS
             ,[DimAssessment].[Answer Text].CurrentMember
            )
           ,[DimPatient].[Patient Key]
          )
      )
    ) ON ROWS
FROM [CareManagement];

你所追求的可能是最后的非空聚合

LastNoneEmpty函数是一个半加法函数,需要一个时间类型的维度才能适用(可以在维度属性中设置),这是因为当度量值沿时间维度聚合时,它的行为不同,而不是沿着任何其他(非时间)维度聚合同一度量值

摘自以下链接:

  • 沿时间维度的LastNoneEmpty行为:返回沿时间段的最后一个(最早的)现有值,因此,如果每月聚合,则返回具有值的月份最后一天的值
  • 沿非时间维度的LastNoneEmpty行为:应用SUM聚合函数,返回的值是沿所有聚合(非时间类型)维度的度量值之和

    • 我认为您在
      生成中使用了错误的层次结构

      SELECT 
        [Measures].[Assessment Patients Detail] ON 0
       ,NON EMPTY 
            {[DimAssessment].[Assessment Text].&[Employee Wellness HRA]}*
            {[DimAssessment].[Question Text].&[Do you use tobacco products?]}*
            {Generate
            (
              [DimPatient].[Patient Key].[Patient Key].MEMBERS
             ,
                [DimPatient].[Patient Key].CurrentMember
              * 
                Tail
                (
                  NonEmpty
                  (
                    [DimDate].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS
                   ,[DimPatient].[Patient Key].CurrentMember
                  )
                )
            )}*
            {[DimAssessment].[Answer Text].[Answer Text].MEMBERS} ON 1
      FROM [CareManagement];
      
      以下是
      AdvWrks
      中的一个类似场景-多个用户使用此多维数据集,以便我们都可以玩:

      SELECT 
        [Measures].[Internet Sales Amount] ON 0
       ,NON EMPTY 
            {
              [Customer].[Customer].[Alexis Thomas]
             ,[Customer].[Customer].[Carlos Morgan]
             ,[Customer].[Customer].[Carlos Scott]
            }*
            [Customer].[Customer Geography].[Country]*
            [Date].[Calendar].[Month] ON 1
      FROM [Adventure Works];
      
      它给出了:

      我可以在
      Generate
      尝试中开始添加,我可以做到以下几点,但一旦我添加
      Tail
      结果就会消失-不确定它为什么会这样:

      SELECT 
        [Measures].[Internet Sales Amount] ON 0
       ,NON EMPTY 
          Generate
          (
            {
              [Customer].[Customer].[Alexis Thomas]
             ,[Customer].[Customer].[Carlos Morgan]
             ,[Customer].[Customer].[Carlos Scott]
            } AS S
           ,
              s.CurrentMember
            * 
              NonEmpty
              (
                  [Date].[Calendar].[Month].MEMBERS
                * 
                  [Customer].[Customer Geography].[Country]
               ,s.CurrentMember
              )
          ) ON 1
      FROM [Adventure Works];
      

      我尝试查询,在列上选择[Measures]。[Assessment Patients Detail],非空([DimAssessment]。[Assessment Text]。&[Employee Wellness HRA],[DimAssessment]。[Question Text]。&[Do you Using tobacco products?],[DimPatient]。[Patient Key]。[Patient Key],生成([DimAssessment]。[Answer Text]。[Answer Text]。[Answer Text]),成员,[Di[CareManagement]中的行上的[Answer Text].CURRENTMEMBER*TAIL(非空([DimDate].[Full Date Alternate Key].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS[DimAssessment].[Answer Text].CURRENTMEMBER],[DimPatient].[Patient Key])为什么要进行激进编辑?我需要特定的记录示例,以patientid-20066为例,最新日期为2016-03-22。供参考:在非空([DimAssessment].[Assessment Text]”和[Employee Wellness HRA],[DimAssessment].[问题文本]列中选择[Measures].[Assessment Patients Detail]&[您是否使用烟草产品?]、[DimPatient]。[Patient Key]。[Patient Key]、[DimAssessment]。[Answer Text]。[Answer Text]、[DimDate]。[Full Date Alternate Key]。[Full Date Alternate Key]。[CareManagement]的行上的[DimPatient Key]。[Patient Key]。[Patient Key]。[Patient Key]。[DimAssessment]。[Answessment]乘法函数要求1参数使用元组集表达式。使用了字符串或数字表达式。@yugandhar-好的,我们可以更明确地在乘法的每一位周围添加
      {..}
      ,我将进行编辑。@whytheq-仅获取一条记录,我还需要剩余的记录,patientid-5250177092066(2016-03-22),25839@whytheq-只有一条记录,我还需要剩余记录,patientid-5250177092066(2016-03-22该patientid-20066的最新日期),25839Hi-whytheq,我也需要剩余记录,你能重播一下吗。