...
前述の項目で紹介したメソッドの他に、AbstractETLRowStepとAbstractETLCachedStepにより部分的に実装されたYellowfinのステップAPIは、いくつかのヘルパーメソッドを提供します。大部分は便宜メソッドですが、上書きされることになるその他のメソッドもあります。APIはまた、処理の様々な段階にフックを提供します。例えば、ロウ(行)ステップは、ステップが終了する前に追加処理を行うため、preEndRows()を上書きすることができます。
javadocにはメソッドの完全な一覧がありますが、こちらでは重要な項目のみを紹介します。以下のカテゴリーに分割することができます。javadocにはメソッドの完全な一覧がありますが、こちらでは重要な項目のみを紹介します。以下のようなカテゴリーに分割します。
- インプット/アウトプットメソッド:ステップのインプットやアウトプットフローを制御します。
- フィールドメソッド:ステップのデフォルト、またはアウトプットメタデータフィールドを処理します。
- 構成メソッド:ステップのオプションを構成するメソッドです。
- データ処理メソッド:ステップの実行中にデータ操作に使用するメドッソです。ステップの実行中にデータ操作に使用するメソッドです。
- エラー制御メソッド:エラーを制御するために使用します。
- その他のメソッド:ステップ実装に関連する興味深いメソッドをいくつか紹介します。
...
メソッド | 説明 | ||||||||||||
public String getStepOption(String optionKey) | YellowfinリポジトリデータベースにStringとして保存されたステップオプションを返すメソッドです。APIは、オプションを特定のデータ型に変換する便宜メソッドを提供します。例えば、getStepOptionValueJSONObject()はオプションをcom.google.gson.JsonObjectに変換し、getStepIntegerValue()は、Integerへ変換します。 | ||||||||||||
public byte[] getFile(String optionKey) public String getFileName(String optionKey) public String getText(String optionKey) | ファイルやCLOBを参照するステップオプションを取得するために使用するメソッドです。これらのオブジェクトは、Yellowfinリポジトリデータベースのテーブルから取得されます。
| ||||||||||||
public void addStepOption(String optionKey, String optionValue) | ステップの構成に新規ステップオプションを追加するメソッドです。オプションキーと値は、Yellowfinリポジトリデータベースに保存されます。 | ||||||||||||
public void parseData(Map<String, Object> data) | フロントエンドからインプットを有効化し、変換するために使用するメソッドです。ステップの設定ユーザーインターフェイスは、パラメーターオブジェクトを構成するParameterPanelCollectionにより表されます。これらは、テキストボックスやドロップダウンのような、基礎的なビルディングブロックです。fieldフロントエンドからインプットを有効化し、変換するために使用するメソッドです。ステップの設定ユーザーインターフェイスは、パラメーターオブジェクトを構成するParameterPanelCollectionにより表されます。これらは、テキストボックスやドロップダウンのような、基礎的な構築ブロックです。field-matchやfile-inputのような、より複雑なパラメーターclassもあります。パラメーターからのインプットデータは、ステップオプションとして保存する前に解析しなくてはいけません。例えば、field-matchパラメーターは、一致するフィールドと、除外されたフィールドの一覧を別々に返します。これらを別々のステップオプションとして保存するために、parseData()はデータ内の対応する入力を編集し、元に戻さなくてはいけません。以下に例を示します。
|
...
メソッド | 説明 |
public ETLStepResult getFreshDataPacket(String outFlowUuid) | データのロウ(行)は、データパケットを使用してステップ間で送信することができます。これは、後から設定が必要な空のパケットを返すメソッドです。これは主に、キャッシュステップで使用されます。フレームワークは、ロウ(行)ステップ処理中に、内部にデータパケットを作成します。 |
public Wire<Object, String> getWireForField(String fieldUuid) | フィールドUUIDに対応するwireを取得するメソッドです。これは、フレームワークによりすべてリンクされているため、インプット、デフォルト、またはアウトプットメタデータフィールドになります。 wire取得後、以下のメソッドを使用することができます。
|
protected void beginInternalTransmission(Object[] data, List<String> fields) | フィールドで指定されたメタデータフィールドに対応するデータのロウ(行)の送信を開始するメソッドです。フィールドは通常インプットメタデータフィールドであり、データと一致するよう適切に調整されています。しかし、データを生成するステップ(例:データベースインプットステップ)は、インプットメタデータフィールドを持ちません。デフォルトメタデータフィールドはその後、適切に調整され、こちらのメソッドに渡されなくてはいけません。 インプット、デフォルト、アウトプットメタデータフィールドの順序はすべて異なる可能性があるため、伝送が不可欠です。Wireはこれらのリンクをサポートし、伝送はこれらの事前に計算されたマッピングを使用して、インプットからデフォルト、アウトプットと正確なフィールドへデータを送信します。 |
protected ETLStepResult endInternalTransmission(ETLStepResult packet) | ステップが、beginInternalTransmission()から送信されたデータの処理が終了した後に呼び出されるメソッドです。データは内部wireから削除され、から送信されたデータ処理を終了した後に呼び出されるメソッドです。データは内部wireから削除され、getFreshDataPacket()を使用して取得されたアウトプットデータパケット内の配列に配置されます。 データは、オーバーロードされたメソッド(endInternalTransmission(ETLStepResult, boolean))を使用して伝送の最後にwire上に保持されます。これは、処理されたデータを他のアウトプットで利用可能にしなくてはいけない、複数のアウトプットステップに有効です。 |
protected void emitData(ETLStepResult dataPacket) | 処理されたデータパケットをアウトプットステップに送信するために使用するメソッドです。データパケットは、どのアウトプットに行けばよいのかを把握しているため、これを指定する必要がありません。メソッドは、ETLExceptionとInterruptedEcceptionをthrowします。これらは、フレームワークに使用されるため、こちらのメソッドを使用するすべてのコードは、これらの例外をそのままthorwしなくてはいけません。さもなければ、フレームワークへの重要なメッセージは失われます。 |
...
ロウ(行)ステップでのエラー制御は単純です。processWireDeta()は、ETLExceptionをthrowし、設定されたエラー閾値にカウントされます。キャッシュステップのエラー制御は、もう少々複雑です。prcessEndRows()からthrowされる任意の例外は、データトランスフォーメーションプロセス失敗の原因になります。エラー閾値を使用するためには、キャッシュステップは処理エラーをcatchし、ステップ内のエラーコレクションに追加しなくては行けません。からthrowされる任意の例外は、データトランスフォーメーションプロセス失敗の原因になります。エラー閾値を使用するためには、キャッシュステップは処理エラーをcatchし、ステップ内のエラーコレクションに追加しなくてはいけません。
エラー制御のメソッドは、以下の通りです。
メソッド | 説明 |
public void throwUnhandledETLException(Throwable e) | エラー制御ができない時にETLExceptionをthrowするメソッドです。このメソッドとともに渡されるthrowableは、既に存在しない限りETLException内でラップされます。また、存在する場合は、そのままthrowされます。
|
public ETLException getETLException(String message) | 特定のメッセージを含むETLExceptionのインスタンスを取得する便宜メソッドです。メッセージはテキストString、またはApplicationResourceキーになり、その場合は、ApplicationResources.properties内に存在していなくてはいけません。
|
protected void addError(ETLException e) | ステップ実行中のエラーを記録するメソッドです。エラー追加後、ステップがエラー閾値を超過しているかどうか確認します。ETLStepErrorThresholdExceededExceptionがある場合は、これをthrowします。これは、キャッシュステップ実装中に有効になることが多いメソッドです。フレームワークはロウ(行)ステップのエラーを制御し、ロウ(行)ステップでは、単純にETLExceptionをthrowしなくては行けません。ステップ実行中のエラーを記録するメソッドです。エラー追加後、ステップがエラー閾値を超過しているかどうか確認します。ETLStepErrorThresholdExceededExceptionがある場合は、これをthrowします。これは、キャッシュステップ実装中に有効になることが多いメソッドです。フレームワークはロウ(行)ステップのエラーを制御し、ロウ(行)ステップでは、単純にETLExceptionをthrowしなくてはいけません。 |
...
その他有効なメソッド
その他、有効なメソッドをいくつか紹介します。
メソッド | 説明 |
public Map<String, String> onCopy(Map<String, String> uuidMap) | ステップのコピー中に呼び出されるメソッドです。これは、ステップの外部依存関係をコピーする方法として使用することを目的としています。 パラメーターは、stepUUID、fieldUUID、flowUUID、metadataUUID、groupUUIDなどを含む、ステップ内のすべてのUUIDのoldUUIDからnewUUIDへのマッピングを持ち、これらはコピーされます。 ステップは、更新しなくてはいけないステップオプション(optionKey、optionValue)のマップを返す選択をすることができます。これは、コピーされたエンティティに関連する複雑なオプションを持つステップに使用されます。null値とともに返される任意のオプションキーは削除されます。 このメソッドが呼び出される場合、ステップに設定されたエンティティは新しくコピーされた新しいものではなく、古いエンティティになります。 |
public void onDelete() | ステップが削除される直前に呼び出されるメソッドであり、ステップの外部依存関係をクリアにするために使用することを目的にしています。 |
public long getRowLimit() | このステップに出力されるロウ(行)の最大数を返すメソッドです。これは、比較的少数のロウ(行)を処理するため、特にプレビューモードに有効です。フレームワークは、ステップからのロウ(行)出力数を制限するために、ロウ(行)制限を使用しますが、ステップをプレビュー用に効率化するために使用することができます。データベースからのインプットや、外部APIの呼び出しのような比較的遅い操作は、ソースで小さめのデータセットに制限された場合、処理が早くなり、メモリ消費を抑えられる場合があります。例えば、SELECT文は制限を設定することができます。 |
...