Fabric Data Engineer Associate(DP-700) 無料問題 5 / 10 ・ 分野2: データの取り込みと変換
顧客ディメンションに「会員ランク」の属性(ゴールド・シルバーなどの文字列)がある。ランクはポイントの増減で1日に何度も変わることがあり、売上を「買った時点のランク」で分析したい。顧客ディメンションを SCD type 2 にすると版が増えすぎるおそれがある。ディメンショナル モデルのディメンション テーブルのページの勧めに合う設計はどれか。
- 会員ランクの値ごとの行を持つディメンションを別に作り、そのキーを売上のファクトに持たせる
- 顧客ディメンションを SCD type 3 にし、直前のランクと今のランクの2つの列を持たせる
- 顧客ディメンションは SCD type 2 のまま、ランクの変化を週に1回まとめて取り込み版を抑える
- 会員ランクを売上のファクトにメジャーの列として持たせ、行ごとにランクの文字列を入れる
正解と解説を見る
正解: A
正解の理由
ページは、属性が頻繁に変わるディメンション(rapidly changing dimension)が見込まれるときは、その属性をファクトの側に持たせることを考えるよう勧める。属性が製品の価格のような数値ならファクトのメジャーにし、文字列なら、その文字列のすべての値からディメンションを作り、そのディメンションのキーをファクトに足す。会員ランクは文字列なので、ランクの値のディメンションを作り、売上の行に買った時点のランクのキーを持たせる。
違う選択肢
「顧客ディメンションを SCD type 3 にし、直前のランクと今のランクの2つの列を持たせる」… ページは、SCD type 3 は属性の列で限られた履歴を持つ方法で、最初の値と今の値だけを持てばよく途中の変化は要らないときに向くと書く。直前と今のランクの2つの列では、それより前の購入の時点のランクは分からない。頻繁に変わる属性についてページが勧めるのは、ファクトの側に持たせることである。
「会員ランクを売上のファクトにメジャーの列として持たせ、行ごとにランクの文字列を入れる」… ページは、頻繁に変わる属性をファクトの側に持たせるとき、メジャーにするのは製品の価格のような数値の属性だとする。文字列の属性は、すべての値からディメンションを作り、そのキーをファクトに足す。ランクの文字列をメジャーの列として持たせる形ではない。
「顧客ディメンションは SCD type 2 のまま、ランクの変化を週に1回まとめて取り込み版を抑える」… ページは、履歴を持たないソースでは、変化を検出して新しい版を作れるようにディメンションを定期的に処理し、変化が起きてすぐに検出すれば有効期間の日付が正確になると書く。週に1回まとめると、1日に何度も変わるランクの有効期間は正確にならない。版が多すぎることは、変わる属性をファクトに持たせたほうがよいしるしでありうるとも書く。
押さえどころ
SCD type 2 の版の数が多すぎると、分析する人が理解しにくくなるとページは書き、歴史の正確さと、使いやすさ・効率との釣り合いを取るよう勧める。SCD type 2 に対応するディメンションには、メンバーと版を表すラベルの属性(人の名前に、その版の地域を括弧で添えるなど)を持たせるとよい。