こんにちは。分析官のA.K.です。最近、Matillionを使う機会が増えてきて、いろいろ便利だなーと感じる日々を過ごしています。ただ、ひとつ文句があるとすれば、ドキュメントが圧倒的に少ない……。「あれ、これって何だっけ?」となった時に、英語の公式ドキュメントを解読しなければいけない……。今回は備忘録の目的も含めてMatillionの変数(variable)についてまとめておこうと思います。
目次
- Matillionの変数の種類
- 各変数の違い
- 変数の挙動に関連する設定値
- 変数の使い方
Matillionの変数の種類
Matillionで設定できる変数は2つのタイプが存在します。一つ目はスカラー値を設定できる変数です。ひとつの変数に対してひとつの値のみが入ってくる変数になります。スカラー値を設定できる変数3つあり、それぞれジョブ変数、環境変数、自動変数があります。
二つ目は、二次元配列の構造を持ったグリッド変数です。この変数はテーブル構造のような関係性を持った変数で、複数項目の変数をまとめて持つことが可能です。グリッド変数の種類は1つだけです。
各変数の違い
ジョブ変数
ジョブ変数は名前の通り、1つのジョブ内で定義される変数になります。ジョブ変数と同じ名前の環境変数がある場合には、環境変数に設定されている値を上書きして実行されます。
環境変数
環境変数は基本的にジョブ変数と同じ挙動をしますが、以下の2点でジョブ変数とは異なります。
- 一つの環境に対して一つの値を設定でき、Matillionの実行環境毎に代入される値が変更される
- 特定のジョブだけではなく、Matillion内全体で横断的に使用できる
①について具体的に説明すると、仮に「dev」,「prd」の2つの環境をMatillionに用意しているケースを想定します。[database_name]という環境変数を設定する場合には、[database_name]の「dev」には”dev-database”、「prd」には”prd-database”と異なる値を設定することができます。そして「dev」環境でフローが実行される際には[database_name]には”dev-database”が代入され、「prd」環境でフローが実行される場合には[database_name]には”prd-database”が変数に代入されます。
自動変数
自動変数は環境変数と同じように、Matillion内全体で横断的に使用できる変数ではありますが、Matillionで自動に設定される変数になります。プロジェクト名やプロジェクトIDなどが自動で設定されており、呼び出すだけで使用可能になります。
使用できる値は、以下の公式ドキュメントを参照ください。
グリッド変数
グリッド変数はジョブ変数の二次元配列の構造バージョンです。1つのグリッド変数に複数の列を定義して、各列に該当する値をマッピングすることができます。
変数の挙動に関連する設定値
Type
「Type」は変数に代入する値のデータ型を示す設定値です。「Type」には、以下の種類があります。
text | 任意のテキスト文字列。 |
---|---|
Numeric | 小数点の有無にかかわらず、任意の数値。 |
DateTime | 次の形式の日付と時刻の値。 形式:yyyy-MM-dd、yyyy-MM-dd HH:mm、yyyy-MM-dd HH:mm:SS 、yyyy-MM-dd HH:mm:SS.SSS |
Data Structure | 構造化されたオブヘクトに対する任意の値。 公式ドキュメントでの使い方はこちら。 |
Behavior
「Behavior」はジョブ内で変数が更新された場合の挙動を示す設定値です。「Behavior」には、以下の種類があります。
Copied | 変数は一つのジョブ内で独立して機能する。 |
---|---|
Shared | 変数は一つのジョブ内で関連して機能する。 |
“Copied/Shared”の違いはジョブ内でフローが分岐して変数の値が更新される際に影響します。”Copied”の場合は一つのブランチで変数の値が更新されても、他方のブランチには影響しません。一方で、”Shared”の場合は一つのブランチで変数の値が更新された場合、他方のブランチでは更新された値が代入されます。
ただし、 後続の処理でブランチが一つに再結合した場合には、各ブランチで更新された変数はデフォルト値に戻ります。
Visibility
「Visibility」は変数が異なるジョブ間で利用可能かどうかを示す設定値です。「Visibility」には、以下の種類があります。
Private | 変数が設定されたジョブ内でしか利用できない。 |
---|---|
Public | 変数を設定したジョブ以外でも呼び出したり上書きしたりすることができる。 |
変数の使い方
変数の使用シーンとしては、同じ処理を再利用して異なるテーブルに対して実行したい場合などに有効です。
基本的に変数を使う場合には、各コンポーネントのプロパティ値やPythonスクリプト内で、先頭にドルマークを付けて変数名を中括弧で挟んで使用します。(コンポーネントの種類によっては、マウス操作のみで設定できる場合もあります。)
${変数名}
ジョブの中で変数を変更したい場合には、オーケストレーションジョブの「Update Scalar」または「Python Script」のコンポーネントをフローに組み込むことでジョブが実行される過程で変数を更新して使用することができます。
まとめ
今回はMatillionの変数について基礎知識的な部分を中心にまとめてみました。本記事が日本のMatillionユーザーの一助になれば幸いです。今後より実践的な使い方や良いフローの組み方などもブログに書き起こしていければな、と思います。