1

如何创建动态计算字段以根据日期/时间戳确定以天为单位的年龄?

例如,假设我有一个具有日期时间戳的字段。在浏览多维数据集时,我希望能够看到一列显示自时间戳以来的天数。因此,如果日期时间戳是“2013 年 8 月 21 日下午 12:00”并且我在“13 年 8 月 22 日下午 12:00”浏览多维数据集,则计算的列“自以来的天数”将显示 1。

SSAS甚至可以做到这一点吗?

4

1 回答 1

1

是的你可以:

with member Measures.[date string] as
            Left(Right([Date].[Date].CurrentMember.UniqueName, 9), 8)
     member Measures.[date formatted] as
            Left(Measures.[date string], 4) + "-" +
            Mid(Measures.[date string], 5, 2) + "-" +
            Right(Measures.[date string], 2)
     member Measures.[date date] as
            CDate( Measures.[date formatted])
     member Measures.[to today] as
            now() -  Measures.[date date]
            , format_string = 'yy" years, "m" months, "d" days"'

select { 
          Measures.[date string],
          Measures.[date formatted],
          Measures.[date date],
          Measures.[to today]
       }
       on columns,
       [Date].[Date].[Date].Members
       on rows
  from [Adventure Works]

给你想要的。您当然不需要所有中间措施,它们只是逐步显示计算的内容。

但是,请注意:我to today使用日期格式格式化了度量值yy。四位数的年份将显示为“1912 年”等,因为 SSAS 在内部使用日期编码(如 Excel)自 1900 年 1 月 1 日以来的天数。我误用了此处的日期格式来格式化持续时间,这是数字而不是真实的日期。这种格式化方法只对小于 100 年的正持续时间给出正确的结果。但这只是一个格式问题,但主要的持续时间计算是正确的。它仅显示持续时间(以天为单位),以及一天内的时间为分数。

于 2013-08-21T20:03:43.497 回答