動的に計算されたフィールドを作成して、日付/時刻スタンプに基づいて経過日数を決定するにはどうすればよいですか?
たとえば、日時スタンプを持つフィールドがあるとします。キューブを参照するときに表示できるようにしたいのは、タイム スタンプからの日数を示す列です。したがって、日時スタンプが「8/21/13 12:00PM」で、「8/22/13 12:00PM」にキューブを参照すると、計算列「以降の日数」には 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]
あなたが望むものを与えます。もちろん、すべての中間測定値が必要なわけではありません。それらは、計算されたものを段階的に示しているだけです。
ただし、1 つの注意点: をto today
使用して日付形式でメジャーをフォーマットしyy
ました。SSAS は 1900 年 1 月 1 日からの日数の Excel のような日付コーディングを内部的に使用しているため、4 桁の年は「1912 年」などと表示されます。数字であり、実際の日付ではありません。この書式設定のアプローチでは、100 年未満の正の期間に対してのみ正しい結果が得られます。ただし、これは形式の問題にすぎず、主な期間の計算はそれでも正しいです。期間が日数で表示され、1 日内の時間が分数で表示されます。