私はMDXに比較的慣れておらず(現在本を注文している最中)、設定された日付の範囲に基づいて、ファクトテーブルの1つからの値を合計する計算メジャーを作成することに亀裂があります(時間ディメンション)、別のディメンションの属性でフィルタリングする必要があります。残念ながら、私は少し状況に陥ったようで、明確な道を見つけることができません。私は他の同様の質問に目を通しましたが、これと同じことをしようとしているものは見当たりませんでした。単一の次元の測定値だけでした。
物理的な測定値を含む測定値グループがありますSourceMeasure
。
[Time]
計算の範囲を指定するために使用する、という名前の時間ディメンションがあります。これは、私の日付キーによる上記のメジャーグループに関連しています。
、という名前のAccountディメンションがあり[Dim Account]
、これには2つの日付属性が含まれています:[Account Start Date]
と[Account End Date]
。これは、アカウントIDを介して上記のメジャーグループに関連付けられています。
私がやろうとしているのは、と[Time]
に基づいてディメンションを範囲にフィルタリングし、そのアカウントに指定された期間の合計を返すことです。[Account Start Date]
[Account End Date]
[SourceMeasure]
明らかに、これはアカウントごとに異なるため、[Dim Account]
ディメンションを除いて集計しないでください(適用されていない場合はおそらく0またはnullを返します)。
以下のテスト式の例。これは、FORMAT_STRING構文(MDX Studioによる)のエラーのため、現在機能していません。
WITH
MEMBER [Measures].[LifetimeMeasure] AS
Sum
(
{
StrToMember
(
"[Time].[Date].&["
+ Format([Dim Account].[Account Start Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss")
+ "]"
)
:
StrToMember
(
"[Time].[Date].&["
+ Format([Dim Account].[Account End Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss")
+ "]"
)
}
,[Measures].[SourceMeasure]
)
SELECT
{
[Measures].[LifetimeMeasure]
,[Measures].[SourceMeasure]
}
ON COLUMNS
,{
[Dim Account].[Account].[AccountName]
}
ON ROWS
FROM
[MyCube]
いくつかの異なるアプローチ(SCOPE、Filter、IIF)を試しましたが、同じ問題点に戻るたびに、[DimAccount]の開始と終了の値に基づいて[Time]ディメンションをフィルタリングする方法日付。
さて、ディメンション間の関係がどのように機能するか、および/または計算されたメジャーがSSASによってどのように計算されるかを完全に誤解している可能性がありますが、まだ何を探すべきかわからないレベルにあります。 mは円を描いて回ります。
私がやろうとしていることは可能ですか?もしそうなら、どこが間違っているのかを理解するのに役立つどこを見ればよいかについての指針はありますか?代わりに計算ディメンションを使用することを検討する必要がありますか?
これがすべて理にかなっていることを願っています。何かを見逃した場合、または詳細が必要な場合はお知らせください。MDXStudioを使用してテストしています。