DBMSでのデータの直接マージ - 7.3

SQLTemplate

Version
7.3
Language
日本語 (日本)
Product
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > サードパーティーシステム > ELTコンポーネント > SQLテンプレート
データガバナンス > サードパーティーシステム > ELTコンポーネント > SQLテンプレート
データクオリティとプレパレーション > サードパーティーシステム > ELTコンポーネント > SQLテンプレート

このシナリオでは、MySQLデータベースへの接続を開き、顧客IDに基づいてソーステーブルのデータをターゲットテーブルにマージし、マージ操作の前後でターゲットテーブルのコンテンツを表示する単純なジョブについて説明しています。WHERE句は、マージ操作中にデータをフィルタリングするために使用します。

Talendでサポートされているテクノロジーの詳細は、Talendコンポーネントを参照してください。

  • tMysqlConnectionコンポーネント、tSQLTemplateMergeコンポーネント、2つのtMysqlInputコンポーネント、および2つのtLogRowコンポーネントを[Palette] (パレット)からデザインワークスペースにドロップします。

  • [Trigger] (トリガー) > [OnSubjobOK]接続を使用して、tMysqlConnectionコンポーネントを最初のtMysqlInputコンポーネントに接続します。

  • [Row] (行) > [Main] (メイン)接続を使用して、最初のtMysqlInputコンポーネントを最初のtLogRowコンポーネントに接続します。この行には、ターゲットテーブルの最初のコンテンツがコンソールに表示されます。

  • [Trigger] (トリガー) > [OnSubjobOK] (サブジョブがOKの場合)接続を使用して、最初のtMysqlInputコンポーネントをtSQLTemplateMergeコンポーネントに、tSQLTemplateMergeコンポーネントを2番目のtMysqlInputコンポーネントに接続します。

  • [Row] (行) > [Main] (メイン)接続を使用して、2番目のtMysqlInputコンポーネントを2番目のtLogRowコンポーネントに接続します。この行には、マージ結果がコンソールに表示されます。

  • tMysqlConnectionコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示します。

  • データベース接続の詳細を手動で設定するか、[Property Type] (プロパティタイプ)リストから[Repository] (リポジトリー)を選択し、既に[Repository] (リポジトリー)ツリービューの[Metadata] (メタデータ)エリアで定義され、保管されている場合は、DB接続を選択します。

    メタデータの詳細は、『 Talend Studioユーザーガイド』を参照してください。

  • 最初のtMysqlInputコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示します。

  • [Use an existing] (既存の接続を使用)チェックボックスをオンにします。ジョブで複数のDB接続コンポーネントを使用している場合は、[Component List] (コンポーネントリスト)から使用するコンポーネントを選択します。

  • [Edit schema] (スキーマを編集)の横にある3点ボタンをクリックし、ターゲットテーブルのデータ構造を定義するか、[Schema] (スキーマ)リストから[Repository] (リポジトリー)を選択し、スキーマが既に定義されていて[Repository] (リポジトリー)ツリービューの[Metadata] (メタデータ)エリアに保管されている場合は、ターゲットテーブルを選択します。

    このシナリオでは、組み込みスキーマを使用します。

  • 上記のようにカラムを定義し、[OK]をクリックしてスキーマ構造を出力コンポーネントにプロパゲートさせ、スキーマダイアログボックスを閉じます。

  • このシナリオでは、[Table Name] (テーブル名)フィールドにターゲットテーブルの名前をcustomer_info_mergeします。

  • [Guess Query] (クエリーの推測)ボタンをクリックするか、[Query] (クエリー)エリアに"SELECT * FROM customer_info_merge"と入力して、すべてのテーブルカラムを取得します。

  • 最初のtMysqlInputコンポーネントとまったく同じ設定を使用して、2番目のtMysqlInputコンポーネントのプロパティを定義します。

  • tLogRowコンポーネントの[Basic settings] (基本設定)ビューで、[Mode] (モード)エリアの[Table] (テーブル)オプションを選択して、コンテンツがコンソールのテーブルセルに表示されるようにします。

  • tSQLTemplateMergeコンポーネントをダブルクリックして、[Basic settings] (基本設定)ビューを表示します。

  • 関連するフィールドに、ソーステーブルとターゲットテーブルの名前を入力します。

    このシナリオでは、ソーステーブルはnew_customer_infoで、8件のレコードが含まれています。ターゲットテーブルはcustomer_info_mergeで、これには5件のレコードが含まれ、テーブルは両方とも同じデータ構造です。

注:

ソーステーブルとターゲットテーブルのスキーマ構造が異なる場合があります。ただし、この場合は [Merge ON]テーブル、[UPDATE Columns] (更新カラム)テーブル、および[INSERT Columns] (挿入カラム)テーブルの各行で指定されたソースカラムとターゲットカラムのデータタイプが同じになっており、ターゲットカラムの長さも対応するソースカラムからのデータ挿入を可能にしています。

  • ソーススキーマを手動で定義するか、[Schema] (スキーマ)リストから[Repository] (リポジトリー)を選択し、スキーマが既に定義され、[Repository] (リポジトリー)ツリービューの[Metadata] (メタデータ)エリアに保管されている場合は、該当するテーブルを選択します。

    このシナリオでは、組み込みスキーマを使用します。

  • 上記のようにカラムを定義し、[OK]をクリックしてスキーマダイアログボックスを閉じ、ターゲットスキーマに対しても同じようにします。

  • [Merge ON] (マージON)テーブルの下の緑色の[+]ボタンをクリックして行を追加し、[ID]カラムをプライマリキーとして選択します。

  • マージ操作中に既存のデータを更新する場合は、[Use UPDATE] (更新を使用)チェックボックスをオンにします。緑色の[+]ボタンをクリックし、目的のカラムを選択して更新するカラムを定義します。

    このシナリオでは、顧客IDに基づいてすべてのカラムを更新します。そのため、[ID]カラム以外のすべてのカラムを選択します。

警告:

プライマリキーとして定義するカラムを更新の対象にすることはできません。

  • [Specify UPDATE WHERE clause] (UPDATE WHERE句の指定)チェックボックスをオンにし、4以上のIDを持つ既存のレコードのみが更新されるように、[WHERE clause] (WHERE句)フィールドにcustomer_info_merge.ID >= 4を二重引用符で囲んで入力します。

  • [Use INSERT] (更新の使用)チェックボックスをオンにし、[INSERT Columns] (挿入カラム)テーブルでデータを取得してデータを挿入するカラムを定義します。

    この例では、ターゲットテーブルに存在しないすべてのレコードを挿入します。

  • 表示する[SQL Template] (SQLテンプレート)ビューを選択し、使用するSQLテンプレートを追加します。

    デフォルトでは、[SQLTemplateMerge]コンポーネントにより[MergeUpdate]および[MergeInsert]という2つのシステムSQLテンプレートが使用されます。

注:

[SQL Template] (SQLテンプレート)タブでは、システムSQLテンプレートを追加するか、独自に作成し、ジョブで使用してコード化された操作を実行できます。詳細は、tSQLTemplateFilterColumns標準プロパティを参照してください。

  • [Add] (追加)ボタンをクリックして行を追加し、テンプレートリストから[Commit] (コミット)を選択して、マージ結果をデータベースにコミットします。

    または、[Trigger] (トリガー) > [OnSubjobOK]接続を使用してtSQLTemplateMergeコンポーネントをtSQLTemplateCommitまたはtMysqlCommitコンポーネントに接続し、マージ結果をデータベースにコミットすることもできます。

  • ジョブを保存し、[F6]を押して実行します。

    ターゲットテーブルの元のコンテンツとマージ結果の両方がコンソールに表示されます。ターゲットテーブルのレコードNo. 4とNo. 5には更新された情報が、レコードNo.6からNo. 8には挿入された情報が含まれています。