マクロとマクロ関数

マクロは、Cloud Data Fusion プラグイン プロパティの構成内のプレースホルダです。これらは、${ } で囲まれた変数(${input_file_path} など)で表されます。ファイルパスやテーブル名などの要素の動的構成を有効にするために、プレースホルダがランタイムで実際の値に置き換えられます。

プラグインのプロパティを表示しているときに、横に M が付いているプロパティ フィールドにマクロを追加できます。マクロを追加するには、[M] をクリックします。

詳細については、マクロ、環境設定、ランタイムの引数を管理するをご覧ください。

マクロ関数

マクロに加えて、次の事前定義されたマクロ関数を使用できます。

  • logicalStartTime()
  • secure()

論理開始時刻関数

logicalStartTime() マクロ関数は、パイプラインの実行の論理開始時刻を文字列値として返します。

パラメータが指定されていない場合、開始時刻をミリ秒単位で返します。パラメータはすべて省略可能です。この関数は、時刻形式、オフセット、タイムゾーンを引数として受け取り、パイプラインの論理開始時刻を使用して置換を行います。

${logicalStartTime([timeFormat[,offset [,timezone])}

logicalStartTime() のオプション パラメータを以下の一覧に示します。

パラメータ 説明
timeFormat 時刻の表示形式のパターン(Java の SimpleDateFormat 形式)。
offset
論理開始時刻より前の時間オフセット。
timezone
論理開始時刻に使用するタイムゾーン。

この例では、パイプライン実行の論理開始時刻は 2020-01-01T00:00:00 であり、次のマクロを指定します。

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

形式は yyyy-MM-dd'T'HH-mm-ss であり、オフセットは論理開始時刻の 1d-4h+30m 前です。オフセットが 20.5 時間に変換されるため、ランタイム時にマクロ値は 2019-12-31T03:30:00 に置き換えられます。マクロ全体の評価結果は、2020 年 1 月 1 日の午前 0 時の 20.5 時間前です。

ファイルベースのプラグインで logicalStartTime() を使用する

この関数を使用する最も一般的な方法は、ファイルベースのプラグインの [パス] フィールドで使用することです。

パイプラインの開始時間をミリ秒単位でファイル名に設定する

実際の開始時刻をミリ秒単位でファイル名にキャプチャするには、マクロ関数のパラメータを省略します。

この例では、パイプラインの開始時刻(ミリ秒単位)を Amazon S3 ファイル名に配置します。

sales_012345671011.csv

Amazon S3 シンクのプロパティで、[パス] フィールドに次の値を入力します。

s3a://sales-data/sales_${logicalStartTime()}.csv

ファイル名に当日の日付を設定する

ファイル名で logicalStartTime() マクロ関数を使用すると、現在の日付を取得できます。

この例では、次の S3 ファイル名に今日の日付をキャプチャします。

s3a://sales-data/sales_20210204.csv

Amazon S3 シンクのプロパティで、[パス] フィールドに次の値を入力します。

s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv

logicalStartTime を使用して構造化レコードにタイムスタンプ フィールドを追加する

構造化レコードにタイムスタンプを追加するには、フィールドの追加変換と logicalStartTime() を使用します。

  1. Cloud Data Fusion ハブから Field Adder Transform プラグインを取得します。プラグインをデプロイすると、[変換] リストに [フィールドを追加] として表示されます。
  2. プラグイン プロパティを構成するときに、タイムスタンプを構造化レコードに追加します。たとえば、フィールド名には新しいフィールドの名前を入力し、フィールド値には logicalStartTime() マクロ関数を入力します。

セキュアな関数

secure() マクロ関数は、単一のキーを引数として受け取り、Secure Store からキーに関連付けられた文字列値を検索します。置換を行うには、引数として指定されたキーが Secure Store にすでに存在している必要があります。これは、機密データで置換を行う場合に有効です。

この例では、MySQL データベースに接続するプラグインの場合、パスワード プロパティ フィールドを次の値で構成します。

${secure(password)}

このマクロは、実行時に Secure Store からパスワードを取得します。

再帰マクロ

マクロは、最大 10 レベルの他のマクロを再帰的に参照できます。マクロ引数は、最も内側の引数から最も外側の引数に向かって評価されます。

この例では、ホスト名とポートを参照するサーバーが存在します。次のランタイム引数を指定します。最後の引数は、他のマクロを参照するマクロです。

  • hostname: examplepetstore.com
  • port: 9991
  • server-address: ${hostname}:${port}

パイプライン構成では、次の式を使用します。

server-address: ${server-address}

実行時に、次の値に置き換えられます。

examplepetstore.com:9991

次のステップ