是否可以创建一个动态计算的字段?

问题描述:

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

例如说我有一个有日期时间戳的字段。浏览多维数据集时,我希望能够看到的是显示自时间戳以来的天数的列。因此,如果日期时间戳记为'8/21/13 12:00 PM',并且我在'8/22/13 12:00 PM'浏览了多维数据集,则计算的列“天数以后”将显示1.

这对SSAS甚至可能吗?

是的,你可以:

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] 

给你想要的东西。你当然不需要所有的中间措施,他们只是逐步显示什么是计算。

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