ジョブおよびデータフローの開発

データフローの作成

Objective

After completing this lesson, you will be able to 基本データフローの登録

Data Services データフロー

データフローには、データ統合およびデータ品質プロセスの主要なアクティビティを表すソース、トランスフォーム、およびターゲットオブジェクトが含まれます。

データフロー使用

データフローによって、ソースから情報が抽出され、変換され、ターゲットにロードされる方法が決定されます。データフローでオブジェクトを接続する線は、データ統合およびデータ品質プロセスによるデータフローを表します。

データフロー:

  • データの抽出、変換、ロード
  • データフローを決定します。
  • 終了した操作です。
  • ローカルオブジェクトライブラリまたはツールパレットで作成されます。

データフローダイアグラムに配置する各アイコンは、図に示すように、データフローのステップになります。

ソースオブジェクトとターゲットオブジェクト、およびトランスフォームをデータフローのステップとして使用できます。アイコンを接続して、Data Services でステップを完了する順序を決定します。

データフローステップ

データフローの各ステップ (ターゲット定義まで) によって、中間結果が生成されます。中間結果はデータセットと呼ばれます。

中間結果は、前の操作からの行のセットと、行が配置されるスキーマです。このデータセットは、さらに処理され、別のデータセットに移動される場合があります。データセットには、WHERE 句を含むクエリの結果などがあり、一部の行をフィルタして、これらの行をクレンジングするデータフローの次のステップに進みます。

データフローは、ワークフロー内のステップであっても、閉じた操作です。データフロー内で作成されたデータセットは、ワークフローまたはジョブの他のステップでは使用できません。そのため、データフローで追加処理できるデータを生成する唯一の方法は、テーブルまたはファイルにデータをロードすることです。

ソースオブジェクト

ソースオブジェクトは、データフローワークスペースにドラッグアンドドロップすると、データストアのオブジェクトメタデータまたはファイル形式から生成されます。

データストアソースオブジェクト

データストア内のテーブルまたは他のオブジェクトからデータを読み込む場合は、最初にこのオブジェクトのメタデータをインポートしておく必要があります。その後、オブジェクトライブラリで利用可能になり、ソースとしてワークフローにドラッグ & ドロップできるようになります。

Data Services では、メタデータが分析され、入力データの構造 (スキーマ) が定義されます。このスキーマは、データフローの構築を進めるために必要な唯一のものです。もちろん、実行時には、データストア情報を使用してソースに接続し、実際のデータもフェッチします。

ファイル形式ソースオブジェクト

ファイル形式の場合も同じ原則ですが、データフローでソースオブジェクトを作成すると、一部のプロパティを変更できるようになります。ファイルの場所やエラー処理オプションなど。

ローカルでサンプルファイルを使用して作成されたファイル形式は、ジョブを実行する Job Server であるため、Job Server のファイルにアクセスするために作成できます。これは、ジョブを実行する唯一のオプションです。

たとえば、同じデータフローで、同じファイル形式から複数のソースオブジェクトを作成し、異なるファイルを (同じ構造で) フェッチして結合することもできます。

試してみる

次に、データフローでソースオブジェクトを定義します。

自分でテストする場合は、以下に進みます。

Query トランスフォーム

プラットフォームトランスフォームの 1 つである Query トランスフォームは、最も一般的に使用されるトランスフォームであり、ほとんどのデータフローに含まれています。このため、他の標準オブジェクトとともにツールパレットに含まれています。

Query トランスフォームでは、ソースからデータを選択してフィルタリングしたり、ターゲットに移動するときに書式を再設定したりすることができます。この図は、ソースとターゲットの間でフィルタを適用する Query トランスフォームの例を示しています。

クエリ変換操作

Query トランスフォームでは、以下の操作を実行できます。
  • ソースから抽出されたデータのフィルタリング
  • 複数のソースからのデータの結合
  • 入力スキーマから出力スキーマへの列のマッピング
  • データに対する変換および関数の実行
  • データのネストとネスト解除の実行
  • 出力スキーマへの新しい列、ネストされたスキーマ、および関数の結果の追加
  • 出力列への 1 次キーの割り当て

必要な操作を定義するには、トランスフォームエディタを使用します。これは、トランスフォームのプロパティを定義するためのグラフィカルインタフェースです。ワークスペースには、以下の領域が含まれています。

  • 入力スキーマ
  • 出力スキーマ
  • オプション

入力スキーマと出力スキーマ

以下の図は、入力スキーマ領域と出力スキーマ領域を示しています。

入力スキーマ領域には、入力データセットのスキーマが表示されます。出力スキーマ領域には、関数を含む出力データセットのスキーマが表示されます。

ソースからターゲットにデータを移動するには、入力スキーマと出力スキーマの関係を定義する必要があります。これを行うには、各入力列を対応する出力列にマッピングする必要があります。

出力列への入力列のマッピング

トランスフォームエディタで以下のアクションのいずれかを実行して、入力列を出力列にマッピングします。

  • 入力スキーマ領域から出力スキーマ領域に単一の列をドラッグします。
  • 1 つの入力列を対応する出力列にドラッグし、カーソルを放して、メニューから [列の再マップ] を選択します。
  • キーボードで Ctrl + クリックまたは Shift + クリックを使用して複数の入力列を選択し、クエリ出力スキーマにドラッグして自動マッピングを行います。
  • 出力列を選択し、オプション領域のマッピングタブでマッピングをマニュアルで入力します。オプション領域に列名を入力するか、入力スキーマペインから列をドラッグすることができます。
  • 出力列を選択し、オプション領域のマッピングタブでマッピングを強調表示し、マニュアルで削除します。

オプション領域

[オプション] 領域は、クエリトランスフォームエディタの入力スキーマ領域と出力スキーマ領域の下にあります。

オプション領域のタブ

Tab内容説明
マッピング

選択した出力列の派生方法を指定します。

を選択

重複行を破棄して、一意の行のみを選択してください。

From

現在の出力スキーマで使用される入力スキーマを指定します。

Outer Join

外部結合として処理する結合に対して、内部テーブルと外部テーブルを指定します。

条件

出力する行を決定する条件を設定します。

グループ基準

出力を結合する列の一覧を指定します。

ソート基準

出力データセットをソートする列を指定します。

上級者 (Advanced)

リソースを大量に消費するクエリ句を処理する個別のサブフローを作成します。

検索

入力スキーマまたは出力スキーマで特定の項目を検索します。

結合のクエリトランスフォームエディタ

結合は、トランスフォームエディタの開始タブで定義します。以下の図は、開始タブを示しています。

注記

WHERE タブには古い形式の結合がありますが、制限が厳しすぎます。開始タブで結合機能を使用することをお奨めします。

試してみる

Query トランスフォームによるデータのフィルタリングから始めましょう。

自分でテストする場合は、以下に進みます。

2 つのソースを結合する Query トランスフォームの作成方法についても説明します。

ターゲットオブジェクト

データフローのターゲットオブジェクトは、物理テーブルまたはファイルにすることができます。これらのオブジェクトは、ソースオブジェクトと同様に、データストアのメタデータまたはファイル形式からドラッグ & ドロップしてデータフローに追加します。

ターゲットオブジェクトがデータベース内の物理テーブルである場合、ターゲットテーブルエディタがワークスペースで開きます。このエディタには、データベースの種類プロパティ、テーブルロードオプション、およびジョブをロードするためのチューニング手法のタブが含まれています。

注記

ターゲットテーブルエディタのほとんどのタブは、移行またはパフォーマンスチューニング技術に焦点を当てています。ここでは、オプションタブにのみ焦点を当てます。

ターゲットテーブルエディタのオプション

オプション説明
列の比較

入力列を出力列にマッピングする方法を指定します。列のデータ型が一致しない場合は、検証エラーが発生します。

ロード前にテーブルからデータを削除する

バッチジョブ中にロードする前にテーブルの内容をクリアする TRUNCATE 文を送信するには、このオプションを使用します。このオプションのデフォルトは [未選択] です。

値を含む列を無視する

ターゲットテーブルで更新しないソース列の値を指定します。

入力キーを使用

Data Services でソーステーブルの 1 次キーを使用できるようにします。デフォルトでは、ターゲットテーブルの一次キーが使用されます。

キー列の更新

ターゲットにデータをロードするときに、キー列の値を更新します。

ターゲットとしてのファイル形式

ターゲットとしてファイル形式を使用する場合は、ソースオブジェクトの場合と同様に、ファイルの場所を変更できます。

また、ファイルの内容を新しいデータとともにロードする前に削除するオプションもあります。

ファイル形式で定義した内容に応じて、ターゲットオブジェクトでは編集不可であるため、ヘッダ行の書込を依頼することができます。

テンプレートテーブル

プロジェクトの設計およびテスト時に、初期アプリケーション開発でテンプレートテーブルを使用することができます。

テンプレートテーブルには、以下の機能があります。

  • リレーショナルデータベース管理システム (RDMS) に移動せずにスキーマを変更することができます。
  • これらは、データフローが 1 回正常に実行されるまで、基礎となるデータベースには存在しません。
  • これらのテーブルは、一度実行されると、基本となるデータベース内の実際のテーブルになります。
  • これらは、Data Services リポジトリ内のメタデータでテンプレートテーブルとしてのみ識別されます。
  • ターゲットテーブルエディタには、テンプレートテーブルのテーブルを削除して再作成するオプションがあります。
  • [テーブルのインポート] オプションは、テンプレートテーブルを通常のテーブルに変換します。

テンプレートテーブルを使用する場合、データストアで新しいテーブルを作成し、メタデータを Data Services にインポートする必要はありません。Data Services では、ジョブを実行すると、データフローで定義されたスキーマを使用して、データベースにテーブルが自動的に作成されます。

1 つのデータフローでテンプレートテーブルをターゲットとして作成する場合、他のデータフローでテンプレートテーブルをソースとして使用できます。

新しいテーブルを式、関数、およびトランスフォームオプションで使用できるように、テンプレートテーブルを通常のテーブルに変換する必要があります。テンプレートテーブルを変換すると、スキーマを変更できなくなります。

試してみる

最初のジョブでターゲットテーブルを追加し、2 番目のジョブでテンプレートテーブルを使用する方法を確認します。

自分でテストする場合は、以下に進みます。

ジョブ実行

プロジェクト、ジョブ、および関連データフローを作成するときに、Data Services でジョブを実行して、ソースからターゲットにデータを移動できます。

即時ジョブおよびスケジュール済ジョブ

以下の 2 つの方法でジョブを実行することができます。

  • 即時ジョブ

    Data Services は、バッチジョブとリアルタイムジョブを開始し、Designer 内から即座に実行します。ジョブを実行するには、Designer と指定された Job Server が実行されている必要があります。開発サイクル中にのみ即時ジョブを実行します。

  • スケジュール済ジョブ

    バッチジョブがスケジュールされます。Data Services 管理コンソールまたはサードパーティ製スケジューラを使用して、ジョブをスケジュールします。スケジュールされたジョブを実行するには、Job Server が実行中である必要があります。

注記

構文エラーがある場合、ジョブは実行されません。

実行オプションの管理

ジョブを実行する前に、いくつかのオプションを編集できます。

  • 各実行の設定が同じになるように、ジョブのプロパティを変更します。
  • オプションがこの特定の実行に対してのみ有効になるように、実行プロパティを変更します。

共有実行のプロパティ

オプション説明
すべてのトレースメッセージを印刷します。

すべてのトレースメッセージをログに記録します。

最適化のための統計の収集

統計を収集して、Data Services オプティマイザが最適なインメモリキャッシュタイプまたはページング可能キャッシュタイプを選択できるようにします。

監視用の統計の収集

アドミニストレータのパフォーマンスモニタでキャッシュ統計を表示します。

収集された統計の使用

ジョブの前回の実行時に収集されたキャッシュ統計を使用します。

実行プロパティはジョブプロパティとして使用できません

オプション説明
システム設定

ジョブの実行時に使用するシステム設定を指定します。システム設定では、データストア接続を定義するデータストア設定のセットを定義します。

Job Server またはサーバグループ

ジョブを実行する Job Server またはサーバグループを指定します。

Data Services では、失敗した要求情報をログファイルに格納できます。Data Services では、パフォーマンスが低下する可能性があるため、デフォルトでは失敗した要求はログに記録されません。失敗した要求情報をログファイルに格納するには、管理コンソールアドミニストレータで有効化する必要があります。

エラーのチェック

ジョブが実行されると、Data Services によって 3 つのログファイルが生成されます。このファイルは、プロジェクト領域のモニタタブから表示されます。デフォルトでは、ログファイルもジョブの実行時にワークスペースに自動的に表示されるように設定されます。

トレースモニタ、およびエラーアイコンを選択して、ジョブ実行中に登録されたログファイルを表示します。

十字形を表す 3 番目のアイコンが色付きで表示され、灰色表示されていない場合は、エラーが見つかったことを意味します。

ファイルアクセス時やファイルロード時のデータ変換エラーなどの特定のエラーを取得するようにデータフローを設定した場合は、ジョブは正常に完了したものの、まだエラーがあるというトレースログを持つことができます。

試してみる

最後に、これらのジョブを実行します。

自分でテストする場合は、以下に進みます。

ワークフロー

前述のように、ジョブ内にワークフローを作成し、そのジョブに直接配置するのではなく、これらのワークフロー内でデータフローを設計することができます。

以下に、ジョブにおけるワークフローの役割を理解するのに役立ついくつかの類似点を示します。

プログラマのように考える人の場合、ワークフローをサブルーチンと比較することができます。ジョブはメインプログラムであり、ワークフローを呼び出すことができます (サブルーチンなど)。ワークフローは、ジョブが実行できるほとんど何でも実行できますが、個別に実行することはできません (ジョブまたは別のワークフローによって呼び出す必要があります)。

非プログラマの場合、算術で括弧のようにワークフローを考えてください。括弧を使用すると、数式の演算の順序を操作できます。同様に、ワークフローを使用すると、ジョブ内のスクリプトやデータフローなどの操作の実行順序を制御できます。

ここで開始する単純なジョブおよびデータフローでは、ワークフローを使用しない可能性があります。しかし、複数のデータフローやスクリプトなどによってジョブが複雑になるにつれ、ワークフローはジョブの一部をモジュール化して柔軟性を高め、パフォーマンスに影響を与えません。また、ボーナスとして、複数の職務にわたって再利用可能です。

データフローは再利用可能であることに注意してください。ただし、2 つの依存データフローをまとめる必要がある場合 (これらの間にスクリプトがある場合など)、それらをワークフローにラップし、ワークフロー全体を再利用することができます。(スクリプトは再利用可能なオブジェクトではないことにも留意してください)。これにより、設計時間が大幅に短縮されます。