是否可以创建一个动态计算的字段?
问题描述:
如何根据日期/时间戳创建一个动态计算字段以确定以天为单位的年龄?是否可以创建一个动态计算的字段?
例如说我有一个有日期时间戳的字段。浏览多维数据集时,我希望能够看到的是显示自时间戳以来的天数的列。因此,如果日期时间戳记为'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年的情况下给出正确的结果。但这只是一个格式问题,主要的持续时间计算是正确的。它只是以天为单位显示持续时间,并以一小部分显示一天内的时间。