0

私は SSAS を使い始めたばかりで、何年にもわたる四半期ごとの特定の年齢範囲の人々の数のグラフを作成できるデータ キューブを作成しようとしています。たとえば、次のようになります。

                 |   $        @$           $
Number of people | # $        @$         #@$
                 | #@$       #@$         #@$
                 +------------------------------
                  2010 Q1   2010 Q2 ... 2014 Q1

ここで、# は 10 ~ 20 歳、@ は 20 ~ 30 歳、$ は 30 ~ 40 歳です。

私が見つけた問題は、2010 年には誰かが 29 歳だった可能性があるため、20 歳から 30 歳の範囲に分類されることですが、2014 年には同じ人を 30 歳から 40 歳の範囲に数えたいと考えています。 33. 日付と時間に依存するディメンションを作成する方法がわかりません (または作成できるかどうかもわかりません)。

4

1 に答える 1

0

モデルに組み込む

正しくモデル化するだけです: 分析するメジャーを含むファクト テーブルと、人物ディメンションおよび日付ディメンションへの外部キーがあると仮定して、分析する範囲を含む「年齢グループ」ディメンション用の新しいテーブルを追加します。このテーブルには、たとえば、1 つのレコード「0-9」、1 つの「10-19」などが含まれます。

次に、age group ディメンションを参照する外部キー列をファクト テーブルに追加します。この外部キーの値を設定すると、外部キーによって参照される日付ディメンションの日付と、外部キーによって参照される人の誕生日の差を計算する、ファクト テーブルに対する SQL 更新ステートメントになります。 . この差がその日の年齢です。これから、年齢層を特定し、その主キーを外部キー列の値として使用します。

最後に、年齢層ディメンションの年齢層列から属性を作成します。

その場で計算する

その場で実際に計算したい場合、パフォーマンスが良いかどうかはわかりませんが、次のように試すことができます。「年齢層」ディメンションも必要です。ただし、それをファクト テーブルにリンクする必要はありません。次に、計算されるメンバーを次のように定義します。

member [Measures].[Age at Date] AS
       DateDiff('yyyy',
                [Person].[BirthDate].CurrentMember.Properties("Key0", TYPED),
                Measures.[Date]
               )
Member [Measures].[Person Count per Age Group] AS
       CASE
           WHEN [Age Group].[Age Group].CurrentMember is [Age Group].[Age Group].[0-9] THEN
                Filter([Person].[Person Id].[Person Id].Members,
                       [Measures].[Age at Date] >= 0 AND [Measures].[Age at Date] < 10
                      ).Count
           WHEN [Age Group].[Age Group].CurrentMember is [Age Group].[Age Group].[10-19] THEN
                Filter([Person].[Person Id].[Person Id].Members,
                       [Measures].[Age at Date] >= 10 AND [Measures].[Age at Date] < 20
                      ).Count
           ...
       END

Measures.[Date]これは、ファクト テーブルに直接名前が付けられたメジャーの各レコードの日付があることを前提としています。そうでない場合は、Key0プロパティを介して生年月日が導出される方法と同様に、日付次元の現在のメンバーから、その日付を日付データ型として取得できます。生年月日属性キーのディメンションで実際に日付データ型を使用していると仮定しています。そうでない場合、型変換が必要になる場合があります。このような目的のために、Analysis Services で使用できる VBA 関数が多数あります (上記で使用したものなどDateDiff) 。

于 2014-07-16T13:12:09.687 に答える