如何创建动态计算字段以根据日期/时间戳确定以天为单位的年龄?
例如,假设我有一个具有日期时间戳的字段。在浏览多维数据集时,我希望能够看到一列显示自时间戳以来的天数。因此,如果日期时间戳是“2013 年 8 月 21 日下午 12:00”并且我在“13 年 8 月 22 日下午 12:00”浏览多维数据集,则计算的列“自以来的天数”将显示 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]
给你想要的。您当然不需要所有中间措施,它们只是逐步显示计算的内容。
但是,请注意:我to today
使用日期格式格式化了度量值yy
。四位数的年份将显示为“1912 年”等,因为 SSAS 在内部使用日期编码(如 Excel)自 1900 年 1 月 1 日以来的天数。我误用了此处的日期格式来格式化持续时间,这是数字而不是真实的日期。这种格式化方法只对小于 100 年的正持续时间给出正确的结果。但这只是一个格式问题,但主要的持续时间计算是正确的。它仅显示持续时间(以天为单位),以及一天内的时间为分数。