ETLプロセスは、時間ディメンションをロードします。例では、ETLの才能の使用しています。
我々は我々のモデルの物理的なテーブルの構造と充填の開発を進めて、データの起源を特定することができます持つ。開始時間ディメンションを持つプロセス。に述べたように、この寸法は我々のERPや他の外部システムに依存しませんが、カレンダーからビルドします。生成し、2000年1月1日から実行される20年の期間については、この表に必要なすべてのレコードは2020年12月31日まで(過去のデータの前に我々のDWのも充電)。
テーブルの物理的な定義は、データソースの解析後に変更されていないと、次のとおりです:
MySQLの物理設計時の寸法表
プロセスは、(我々は以前のブログのエントリで見たように)才能が続く使用して実装されます:

変換は、時間ディメンションを作成する
我々は、Javaのオプション世代才能に使用する(私たちは言語をできるのPERLも使用してください。)Javaを使用したことを意味するすべてのプロセス、それが内部的にJava言語に"翻訳"が定義されますことを変換。厳密には必要ではない彼らが大幅にツールを使用して作業を容易にする私たちは処理やプロセスの標準として含まれていないために独自のコードを定義することができますを知って、才能で動作するようにJava言語を知っているが。
才能は、Eclipse開発環境に基づいています。これは、変換の定義はクリックして、コンポーネントをドラッグし、それらの間の関係を確立し、非常に直感的なメニューで行われる豊富な機能とグラフィカルな環境です。私たちが展開すると、検証プロセスを監視するプロセスとそのエラーだけでなく、トレースの可能性を分析し、デバッグ環境が含まれています。
次の図は、才能で作成されたジョブの例です:

才能のグラフィカル環境ツール
グラフィカルな環境の中で最も重要なコンポーネントは次のとおりです:

才能オブジェクトリポジトリ
リポジトリ:以下のツリーとして使用してから落ちて、才能を定義することができますオブジェクトをすべて含まれています:
- ビジネスモデルは:才能我々のビジネスモデルを定義するシンプルでグラフィカルなツールを用意しています。このフォルダには才能を使用して、"描画"を持って様々なビジネスモデルを探します。ツールは、最も一般的なグラフィック要素が含まれています。
- ジョブのデザインは、変換や統合のデータのプロジェクト、複数のプロセスまたは定義することができ、分類のフォルダ構造に整理し、分類し、それらをジョブで構成されています。このセクションでは、我々が定義されている別のジョブとは、我々は、分類している方法を見てください。
- コンテキスト:実行コンテキストは、プロセスです。彼らは、定数または我々がそのプロセスを実行するように求めていることを、我々は仕事のさまざまなコンポーネントを使用できるパラメータを定義することができます。コンテキストはまた、ファイルからの実行時にロードすることができます。
- ルーチン:私たちは才能のコード(これはその後の変換で使用することができます)そして、我々がどこ操作または計算または変換するために我々は標準的な方法を持っていない実行するには、我々の独自のルーチンを追加することができますによって開発されたルーチンを見ることができる場所です。ルーチン(またはPerlは、言語が選択されている場合)は、Javaでプログラミングされます。
- テンプレートのSQL:SQL文があらかじめ定義された、我々が使用することができますまたはカスタマイズテンプレートです。
- メタデータ:私たちは、プロジェクトのメタデータを定義する場所です。我々は、すべての設計で再利用されるコンポーネントのこれらの定義は、変化のプロセス。たとえば、メタデータは、データベースへの接続を定義することができますデータベースのスキーマを取得し、(テーブル、ビューと、等)、それらの記録も残している、SQL文を定義、特定のファイルなどの異なる種類のパターンをこれは私達に一つの場所で定義され、プロセス全体でそれらを再利用する要素をすることができます。メタデータリポジトリは、すべてのプロジェクト情報を一元化し、統合のすべてのプロセスの一貫性を保証します。送信元および宛先システム統合に関連するメタデータを簡単にメタデータデータベースやファイル様々な参加者によって提供されるの分析の高度なツールを使用してリポジトリにロードされて処理されます。メタデータで定義されている特性は、それらを使用するプロセスによって継承されます。
- ドキュメント:我々はフォルダにそれらを分類すると、プロジェクトは我々の分析と開発のドキュメントをファイルを読み込むことができます。リンクは、リンクまたはリポジトリ内のファイルを直接読み込みを行うことができます。このユーティリティは、私たちは一つの場所のデータ統合プロジェクトのすべての要素に集中することができます。
- ごみ箱は:ごみ箱に移動し、そこに必要に応じて戻ってそれを持ってオブジェクトを削除します。
ジョブのデザイナは:要素異なっている間の関係を仕事を確立するツールを構成するコンポーネントを様々な操作から先。
デザイナー仕事
ときに下部にあるジョブを実行するとパフォーマンスモードを設定するには、プロパティを変更するには、プロパティを設定し、そこから私たちはそのようなジョブのコンテキストを設定するなど、さまざまなアクションを実行することができますタブのセットを持って、仕事での作業ジョブをスケジュールジョブのコンポーネントは、など、ジョブの階層を確立します。
最後に、アプリケーション側の右側に私たちは、ジョブに使用されている我々の持つコントロールをコンポーネント提供する才能が異なっているパレットは、。彼らは、関数によって分類されます。

コンポーネントパレット
才能で使用可能なコンポーネントのいくつかは:
- ビジネスインテリジェンス:ジャスパーレポートに出発、またはOLAPデータベースグループの多次元のニーズを読み取りまたは書き込み対応コネクタ、緩やかに変化するディメンションの変更管理データベース(等、それらのすべての情報ビジネス関連して。)
- ビジネス:システムのSAPコネクタからの書き込みシステム(中心は、Microsoft CRM、Salesforceは、砂糖、vTigerの)または読み取りおよび読み取り、書き込み型のCRM。また、Alfrescoの文書管理システムで作業することができます。
- カスタムコード:コンポーネントは、コードをカスタムを定義して我々自身の才能を使用内のコンポーネントを使って、他の統合は、。我々は、Java、Perlなどのコンポーネントだけでなく、負荷のライブラリを作成したり、Groovyのコマンドをカスタマイズすることができます。
- データ品質は:管理品質の部品のデータに対してメタデータの検証、フィルタリング、CRC計算スキーマ、検索のためのファジーロジック、置換用の値など、クリーンなど、重複
- - ELTのは:モードELTの内のデータベースを扱うコンポーネント(変更やシステムなどのプロセスは典型的な。) - ファイル:)のプロパティのコントロールは、ファイルの管理(検証の存在を、コピー、削除、リスト、、)など、電子メールへの読み取りファイルを別のフォーマット(テキスト、エクセル、区切り、XML、およびそれらの書き込み。 - インターネット:続きアクセスコンポーネント、FTPサーバーは、のようなママ、電子メール、RSSフィードは、SCP、Webサービスとしてオンラインで保存されて、Enid。 - ログは&エラー:管理制御とプロセスの定義にエラーを記録します。 - その他:ウィンドウメッセージなどのさまざまなコンポーネントは、サーバーの動作検証、生成するレコードが、変数のスコープの管理など - オーケストレーション:コンポーネントが)等の前または後のジョブ、プロセスを待って、データファイルまたはとサブジョブ定義されて、ループ内での我々の変換(生成ジョブを処理し、タスクの生成文字列とオーケストレーションが実行される。 - 処理:データ処理コンポーネントのためなど、非正規化ストリームなどの集約、マッピング、変換、フィルタ - システムに:システムの動作を持つコンポーネントの相互作用(コマンドの実行、環境変数など)。 - なXML:構造体の作成 や解析、検証で事業展開して、コンポーネントのために働いてと構造データのXML。 才能とする仕組みのアイデアを得るためには、ここからアクセス可能な(のWeb才能興味深いを参照してくださいデモを分5のリンク )。また、MySQLテーブルのテストデータを生成する方法を以下のデモビデオを見ることができます。 また、これにはさらに)英語、ダウンロードのユーザーズマニュアルのツールおよびコンポーネントリファレンス (両方のガイドでは、深めのリンク 。 我々は少しの才能であることを知っているので、我々はさらに実用的な例が表示されます。我々は、2000年1月1日から始まる日付のストリームを生成する必要がある、2020年12月31日に日(のディメンションで20年間を運ぶ日付)になる。 pをするにはのは、次の手順を定義してみましょうrocess: 1)カウンタが)コンポーネントグループtLoopオーケストレーションを使用して9999(0から行くと、10,000回を実行するループ。 2)ループは、コンポーネントtRowGenerator雑多なグループを使用して日付を2000年1月1日()を使用してログを生成する制御レコードジェネレータを呼び出します。 3)RowGeneratorは、時間ステップ1(この私たちは毎日、開始日を増やしている、すべての必要な日付を生成しているのカウンタに追加する処理(MAP)を通過する日。)私たちは、コンポーネントTMAP処理グループを使用しています。 4)我々は、期日ごとに、我々は、変換テーブルとして我々は、以前は示されている時間のディメンションのすべての属性を生成する他の処理(MAP)を、生成された日付(月、年、日、曜日、四半期学期など)。私たちは、コンポーネントTMAP処理グループを使用しています。 我々は、それぞれの日付の年、四半期、学期、休日や週末のデータを生成するための週の正しい数を生成するためにJavaでルーチンを定義しなければなりませんでした。たとえば、週の生成のために我々は次のJavaコードを記述している: 我々はデータベースにロードするなど5)私達は、2020年12月31日よりも古いレコードを破棄するようにフィルタされます。私たちは、コンポーネントtFilterRow処理グループを使用しています。 DWD_TIEMPOテーブルのデータベースEnobia 6)を挿入レコード、コンポーネントtMySqlOutput、グループデータベース、MySqlを使用します。レコードがデータベースに既に存在する場合は更新されます。 ジョブの完全な概要は次のようになります: ジョブは、時間ディメンションを充填 これは、ETLツールを使用して私たちの最初の接触だった。(私たちは週や日付の他の属性の治療用のJavaルーチンを準備していたため、またはほぼ)プログラミングがなければ、我々はデータで埋めている本当の最初のテーブル/我々のモデルの寸法です。 時間ディメンションを埋めるの才能の仕事
/ /テンプレートルーチンのJava
パッケージのルーチン;
輸入java.util.Calendarの;
インポートは、java.util.Date;
{publicクラスの日程
公共の静的なString semana_del_anyo(日付date1は){
カレンダーc1に= Calendar.getInstance();
(Calendar.DAY_OF_WEEKの、Calendar.MONDAY)c1.set
(1)c1.setMinimalDaysInFirstWeek;
(date1は)c1.setTime;
int型週= c1.get(Calendar.WEEK_OF_YEAR)
(週<10){場合
戻る(0 + Integer.toString(週));
他の{}
(Integer.toString(週))を返します。
}}