ルックアップのための才能のETL Cliente.Tipos次元マッピング。管理SCDの(緩やかに変化するディメンション)。

Enobiaは、プロジェクトより複雑で、おそらく消費するより多くのリソースの進歩を続けて、ETLが処理されます。すでに述べたように、いくつかのプロジェクトは、移植時の80%まですることができます。だけでなく、プロセスは、十分な一貫性、厳格さ、品質などで開発されていることビジネスインテリジェンスシステムの現実のプロジェクトの成功とその後の動作が決定されます。抽出、変換およびロードのプロセスがよく開発されていない確かなら、それは最終的にはシステムの適切な使用に影響を与える可能性

プロジェクトの寸法のETLプロセスを完了するには、私たちは私たちがお客様を分析するすべての属性が含まれています顧客ディメンションの負担に対処します。のは、ロードプロセス推進ディメンション物流の公表を無視してみよう、彼らは非常に単純で目新しいものではない。

あなたは、マッピングテーブルをルックアップを実行才能さまざまな方法について詳細に入り、顧客ディメンションの充電のプロセスを記述すること。つまり、私たちは私たちには、データベース(たとえば、別のテーブルの付加価値を回復する必要のある値がある場合は、は、顧客コードは、品目マスタで導入された製品ファミリに彼の名前を取得する、才能は、我々は、この協議を行うことができます方法を参照してください)​​パラメータテーブルの説明等を取得します。

同様に、Veremaあなたのコンポーネント内でJavaを使用してより多くの例では、それは(私たちはこの言語の広範な知識を持つように強制されますが)与えてくれる力。

例をするには完了すると、実際の次元で我々の)寸法を変更ゆっくりSCDのですが行くことに管理緩やかに変化するディメンション(つまり、我々は、タスクにその才能を持つコンポーネントを使用して、寸法のような治療の例が含まれてありますが処理(tMySQLSCD要素)の適切なアルゴリズムを実装しています。

"/ a>ををbdimcliente1.jpg

Customerディメンションの完全に才能ETLプロセス

我々は上の写真でわかるように、ETLプロセスの手順は、Customerディメンションを埋めるとしています:

メッセージログの初期段階でのジャンルを立ち上げたprejob 1)実装プロセスとlogCatcher(プロセス内のJava例外またはエラーをキャッチしてください。)これは、電子メール警告を送信するが生成されますジョブのいずれかの手順で問題がある場合にいることを確認します。

  • ピッチャーPrejob (tPrejob成分):プロセスのメイン前に、pretrabajoの立ち上げを使用してください。
  • ホームにメッセージをログ (tWarnコンポーネント)の実行をジョブが始まっていることを示す生成するメッセージをログ。
  • エラー制御は、 (tLogCatcherコンポーネント)は、エラーの種類のいずれかを待ってすることは、ジョブの存続期間を"リッスン"コンポーネントをことが有効にします。その時は、エラーを取得し、電子メール通知を送信するために次のコンポーネントに渡すことがアクティブになります。
  • tFlowtoIterate :Eメールを送信するには、順序の反復するレコードに変換ログの流れを。
  • メール送信Notif (tSendMailコンポーネント):エラー電源のメッセージ処理を停止し、ステップメールの送信をメールの通知を含む、エラー。それが何かを伝えるための方法行った過程で間違っているのです。次の画像では、Gmailアカウントに送信されるエラー通知メールの例を持っています。
または電子メール"幅="537"高さ="394"をalt ="は"src ="/ files/uploads/32image/Respinosamilla_bi/job-dimcliente-envio-email.jpg"/ a>を

例通知の電子メールは、エラーを送信

2)は、ERP、マスターファイル内のすべての既存の顧客(コンポーネントtOracleInput付き)で顧客マスタから回復した。


ジョブDimCliente - 読書得意先マスタのSAP

3)我々は、誤った値の置換を空白または選択したレコードを作る私たちは、ディメンションのETL製品で見たように泳いで基準の下で、(tReplaceコンポーネントを使用して)を設定します。

4)我々は、対応するSQLクエリ(コンポーネントをTMAP使用)を使用してデータベース(ルックアップフィールド)で、他のテーブルから他のフィールドを充填すると、クライアントのサイズのマッピングを完了した。


ジョブDimCliente - マッピングカスタマー

あなたは、私たちは、Java言語の構文を使用している(ただし、他​​のフィールドと説明されます)は、対応するルックアップテーブルと顧客マスタのマッピングを行う方法を参照してくださいすることができます。これは、変化に私たちに多くの電力を与え、私たちはほとんど何も操作を実行できるように、我々は、Javaの知識、そのデータ型を、どのようにそれらを変換する必要がありますが。いくつかの例を示します:

  • Relational.ISNULL(row2.psofg):"未割り当て"row2.psofg Javaの演算子ではないことができますか会った私たちに割り当てることです条件は場合に値または応じて別の結果。この場合において、row2.psofgがnullの場合、結果は値が与えられます"未割り当て"それ以外の場合は、フィールドの値row.psofgが与えられます。
  • StringHandling.UPCASEは(row2.ort01)StringHandされているクラスメソッド私たちは文字列を大文字に渡すことができます玲。
  • Long.valueOf(StringHandling.RIGHTは(row2.konzs、10)):と文字列を取得するには、右をStringHandlingクラスのメソッドを使用して結果は、メソッドvalueOfメソッドのデータLong型と数値の変換します。

コンポーネントTMAPのマッピングの種類

)とソースファイルやデータの他の、または他のテーブル(からTMAPの我々が使用するコンポーネントを完了する我々のフローデータを持つ値、我々は)樹液を参照してくださいそのファイルからマスター私たちは、データの場合と我々の(ストリームは、常にあるメイン来る1つまたは複数のフローは、(上記のイメージで見ることができるように)参照。ルックアップこれらのフローは、私たちは、特定のキーを探して、別の場所に存在値"に必要事項を記入"することができます。キーは内または他のメインストリームから来るかもしれない(入れ子に)検索流​​れる。クライアントコードから取得するためのelemploを考えると、(指定されたビジネスなど)に関連付けられたデータ。続いて、市販のコードでは、このコードを、ビジネスの名を使用して、別の検索で探します。

ルックアップの流れは図のように3種類のすることができます。私たちは何をそれぞれ見てみましょう:

  • 後負荷は:TMAPコンポーネントの分岐コンポーネントTMAPののルックアップは行わ唯一の実装する前に一度。この場合において、業界の実行は、すべてのレコードが、それらの値を見つけるために検索生成する必要があります(これは、例えば、全体のマスターファイルをロードします)。検索したレコード数のデータ、および、プロセスのボトルネックになることができれば同じ種類のFOR EACH ROWのリロード時に使用する必要があります。
  • 行の各リロードで:メインのフローに到達するにはレコードごとに実行されるブランチのルックアップ。この型のマッピングには私たちは本当に見ていずれかになります一意の値を渡す特定の値(たとえば、クエリのルックアップを実行することができます。ルックアップのこのタイプの後の例)を参照してください。月は非常に大きな意味が(レコード数百万の顧客マスタテーブルのことを思い出します。)query属性で管理することはありませんルックアップテーブルで使用する意味をなさない。
  • リロードが)で各行(キャッシュ:上記と同じですが、回復のレコードは、キャッシュにある格納されます。次のクエリでは、我々は、キャッシュに最初に見て、それが存在する場合は、プロセスを起動しません。それが存在しない場合は、実行が不足している値を見つけることが繰り返されている場合。

ケースでは、この型のすべてのフロー我々は)は、行ごとに再読み込みをお持ちの使用されるルックアップの例が表示されます私たちはそれ以降( 負荷イレブン使用します。

5)実際にコンポーネントTMAPも)とDWデータベース内の既存のデータ(と、彼らは(または新しいレコード)を変更するならば、我々はアップグレードを実行することのレコードへの変更があることを確認した。原則として、我々が緩やかに変化する次元の管理を実行しませんが、現時点では、マスターファイルは、我々は常にデータの画像になります。


ジョブDimCliente - 変更の検証

以下の条件式を実行するDWデータベース内の次のステップに更新されたレコードの識別通路(100%Javaでされていることを参照してください)​​を使用します。用語は、我々のERPから取得され、顧客ディメンションテーブルDWD_CLIENTE内の既存の値の間のフィールドの比較によりフィールドです。

!Row8.cliente_desc.equals(row10.cliente_desc)| |
!row8.agrupador_id = row10.agrupador_id | |
!Row8.agrupador_desc.equals(row10.agrupador_desc)| |
!Row8.comercial_id.equals(row10.comercial_id)| |
!row8.canal_id = row10.canal_id | |
!Row8.canal_desc.equals(row10.canal_desc)| |
!row8.tipocl_id = row10.tipocl_id | |
!Row8.tipocl_desc.equals(row10.tipocl_desc)| |
!Row8.pa​​is_id.equals(row10.pais_id)| |
!Row8.region_id.equals(row10.region_id)| |
!Row8.provincia_id.equals(row10.provincia_id)| |
!Row8.cpostal_id.equals(row10.cpostal_id)| |
!Row8.poblacion_id.equals(row10.poblacion_id)| |
!Row8.nielsen_id.equals(row10.nielsen_id)| |
row8.clubvinos_id!= row10.clubvinos_id

のROW我々はそれぞれに種類のリロードを実行する私たちは場合、それぞれのルックアップのレコードで制御TMAPを(に到達する、この、SQL文が流れルックアップに実行されるが注意されます(以下のようにそれを使用WHERE条件私たちは我々は、コントロールのTMAPを生成することが私たちが確認する各クライアントのコードが含まれているもの)される変数。この場合、ステップは、コンポーネントTMAP付属しており、後に提供される各レコードごとに1回実行される検索フローに関連付けられている:

"SELECTは、dwd_cliente.cliente_id
 、dwd_cliente.cliente_desc
 、dwd_cliente.agrupador_id
 、dwd_cliente.agrupador_desc
 、dwd_cliente.comercial_id
 、dwd_cliente.canal_id
 、dwd_cliente.canal_desc
 、dwd_cliente.tipocl_id
 、dwd_cliente.tipocl_desc
 、dwd_cliente.pais_id
 、dwd_cliente.region_id
 、dwd_cliente.provincia_id
 、dwd_cliente.cpostal_id
 、dwd_cliente.poblacion_id
 、dwd_cliente.nielsen_id
 dwd_cliente.clubvinos_id
からdwd_cliente
のWHERE CUSTOMER_IDが="+(globalMap.get(var.cliente_id"))

この場合においても、文SQL(およびそれを含む対応するコンポーネント)が流れTMAPメインコンポーネントから来て、各レコードごとに1回実行されます。また、SQLステートメントだけでなく、データベースのレコードを回復継続的に(私が検索するvar.cliente_id変数の値とされている)実行されます。

6) プロセスが tWarn MENSAJE_LOG_FIN型プロセスのコンポーネントが正常に完了したログメッセージ内の対応する締結しています

治療は、ゆっくりと寸法を変えず

)顧客ディメンションに平行にテーブルに記録された勉強のして、例として動作をする( 寸法を変えずに管理ゆっくりとステップを含むいた。の才能コンポーネントのタイプはtMySqlSCDをするこれを行うには

理解するために、まさにゆっくりと変化している寸法は、私はいくつかの文献をお勧めします。ビジネスインテリジェンスブログ簡単には、を参照してください(され、どのように管理することを、彼らは明らかに非常には説明はここと) 代理キー 。 Curto Jopepもあなたの良い定義を非常に与えるブログ

かつて我々は、理論をクリアするのは、才能のコンポーネントを使用して練習して適用することができます。

ぜフルにwp -画像- 573"のタイトル="ジョブDimCliente SCD1"幅は="686"高さ="238"altは="は"src ="/ files/uploads/32image/Respinosamilla_bi/job-dimcliente-scd1.jpg" / a>を

ゆっくりと寸法を変更するための管理コンポーネント

我々は以下の図に見られるよう寸法アルゴリズムSCDは、適切なエディタを使用して管理されています:


SCDのコンポーネントエディタ

エディタを使用するには、テーブル名がデータベースに存在して示し、それは私たちが(バージョン管理に必要なフィールドを含めるSCDのエディタに記載されている必要がありますように)SCDを管理テーブルになります。コントロールは、テーブルが提供されるからレコードを処理するために流れます。 SCDで属性の異なるタイプのテーブルに対して更新プログラムを動作しますエディタとして示された。

コントロールは、SCDの寸法の編集されている:

  • 未使用の場合:ここでは、エディタを得るすべてのSCDで使用するためのフィールドがありません。このサイトから、我々は他のサイトのフィールドをarastrandoされます。
  • ソースキー:彼ら )、元のシステムに含まれているプライマリ(データキーのキーを押します。得意先マスタは、ここをソースシステムでこれを識別するキーを示しています。
  • サロゲートキーは:キーサロゲートに指定されている名前。つまりは、私たちはDWのデータのバージョンを管理できるようになりますキーを発明した。
  • フィールドタイプ0:ここで変更を示すとは無関係であるのフィールドを取得します。我々はここに置いた場合、たとえば、フィールド名は、DWの既存のデータに対して、ソースシステムの変更を考慮するつもりはない(無視されます)。
  • フィールドタイプ1:フィールドがここにバージョン管理受信すると、変更が出ており、これは、値は既存の値をとしたときに示すこと潰すではなく、。
  • フィールドタイプ2:これは、)キーを押して、新しい代位表示されますと(フィールドのテーブルのレコードを新しい発生私達がしたいときに変化が。これはフィールドがここにゆっくりと寸法と人のフルバージョンを実行する人のためを変更するされることはありません。
  • バージョン:値は、)のバージョン管理(開始日と終了日をここで示されたレコードの場合は、現在のフラグは保持トラックや数字のバージョン(目的、このテーブルのフィールドを、追加する必要です)。
  • フィールドタイプ3:以前の値のバージョンのに対して、これは保護したいと考えて、フィールドのためのどのということを示しています(変更があるすなわち、我々が以前され、最新のは常にされているバージョンの2つ)。

SCDの大きさの説明を締結するには、カタログには、(出力は、自身がゆっくりと寸法、リビジョンを変更するの管理のために含まれている属性の妥当性の日付流入と流出の違いを観察するなど):


SCDでのデータ転送方式サイズ

してよいテーブルDWD_CLIENTE_SCD MySQLのエントリを参照してください例を理解しています。クライアントは、その名称中に変化があったかと新しいサロゲートキーを使用してテーブルに新しいレコードを作成し観察。すべてが我々を管理することなく、才能のコンポーネントによって自動化された方法で行われている。


キー代位でMySQLに同じ顧客のレコード

最後に、)tReplicateに注意してくださいコンポーネントのデータフロー(重複している我々が使用される新しいコンポーネントを設定してくださいこのコンポーネントは、単一の流れから、私たちを有効にし、多くは(すべて等しいと同じレコードを処理する)必要なストリームを生成します。


データの複製はtReplicateコンポーネントと流れ

ジョブのコンポーネントをそれぞれ定義するには、私たちは詳細をどのように参照してください、あなたは才能ができるアクセス完全に生成されたドキュメントは、HTML はここ 。あなたは、ドキュメントを含むzipファイルをダウンロードすることができます