SSブログ

Talend Open Studio (ETLツール) でデータ統合(7)~SCD Type2 の実装 [BI]

商品カテゴリをSCD Type2で実装したディメンジョンテーブルを使って集計する必要が出てきました。さて、集計の仕方ですが単純に時間スライスでJOINしてもいいのですが、商品カテゴリの世代毎の売り上げを比較したいという要件や、そもそもSCD Type2のテーブルは日付で条件をかけるというひと手間あるので、スタースキーマ前提のBIに突っ込むには適していないので、工夫が必要です。

そこで悩んだ末に「ファクトテーブルにカテゴリをつっこむ」という解決法をとることにしました。まあもともとちゃんとした階層構造ではないし商品マスタに持たせられないので、美しくは無いがパフォーマンスを考えると現実的な解かなとは思っています。

さて、上記のような背景をもとに以下のようにTalendで実装しました。

○テーブル
・ソースとなるファクトテーブル
 商品コード
 日付
・カテゴリマスタ
 商品コード
 カテゴリコード
 販売開始日
 販売終了日

○手順1
上記2つのテーブルをLEFT OUTER JOINします。カテゴリのカバレッジが100%ではない場合はCASE句などを使用して、カテゴリコード、販売開始日、販売終了日からNullを撲滅してください。

○手順2
上記データをtMapで処理します。tMapでポイントになるのは入力行を処理する際の条件式を追加するところです。出力項目のレンチのアイコンをクリックすると条件式が入力できます。
無題.png
ここでは以下のような式を入れました(項目は雰囲気で察してください)。

TalendDate.compareDate(row1.date, row1.startdate,"yyyy-MM-dd") >= 0 && TalendDate.compareDate(row1.date, row1.enddate,"yyyy-MM-dd") <= 0

要は販売の日付が販売開始日・終了日の間の場合は、、、という条件です。

○手順3
上記出力をDB側で受け取ります。

まあここまでやって思ったのは、SCD Type2 って大変ですね(泣)。業務側からは非常に要望の強い部分ではあるので、MDM含めてちゃんとできるとデータ分析のレベルを上げられる要素ではあります。
タグ:Talend TOS RDBMS SCD
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。