Dataform コアを使用すると、SQLX と JavaScript を使用して SQL ワークフロー オブジェクトを作成できます。任意ですが、SQLX とともに JavaScript を使用して、ワークフローで類似の要素を繰り返し作成します。たとえば、JavaScript を使用して、特定のユーザー ID を削除して、ワークフロー内の各テーブルのビューを作成できます。 SQL ワークフロー オブジェクトを JavaScript のみで開発することもできます。
JavaScript を使用して Dataform SQL ワークフローの開発を開始するには、JavaScript 構文と次の JavaScript コンセプトに精通している必要があります。
- 変数
- 配列
- 条件ステートメント
- for ループ
- マップ
- 関数
- オブジェクト
- モジュールのエクスポートとインポート
SQLX ファイルに JavaScript コードを追加する
JavaScript コードを SQLX ファイルに追加する方法は 2 つあります。インラインと JavaScript ブロック内です。
JavaScript ブロックを使用して、SQLX ファイルで関数や定数を定義できます。インライン JavaScript を使用して、SQLX または SQL クエリを動的に変更できます。
次のコードサンプルは、SQLX ファイルの post_operations
ブロックにインラインで追加された self
Dataform コアの組み込み JavaScript 関数を示しています。
config {type: "table"}
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
次のコードサンプルは、JavaScript ブロックで定義され、SQLX ファイルのクエリ内でインラインで使用される定数を示しています。
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
JavaScript でコードを再利用する
JavaScript コードを再利用することで、Dataform での開発を効率化できます。単一の SQLX ファイル全体で JavaScript の定数と関数を再利用するには、JavaScript ブロックにカプセル化します。単一の Dataform リポジトリ全体で JavaScript コードを再利用するには、インクルードを作成します。 複数の Dataform リポジトリ全体で JavaScript コードを再利用するには、パッケージを作成またはインポートします。
JavaScript のカプセル化により単一の SQLX ファイル全体でコードを再利用する
単一の SQLX ファイル内で再利用できる SQL コードの繰り返し部分を作成するには、JavaScript ブロックに関数と定数をカプセル化します。JavaScript ブロックで定義されたコードは、ブロックが定義されている SQLX ファイル内でのみ再利用できます。詳細については、Dataform コアの概要をご覧ください。
次のコードサンプルは、JavaScript ブロックで定義され、SQLX ファイルのクエリ内でインラインで使用される定数と関数を示しています。
js {
const foo = 1;
function bar(number){
return number+1;
}
}
select
${foo} as one,
${bar(foo)} as two
インクルードを使用して単一のリポジトリ全体でコードを再利用する
インクルードは、リポジトリにグローバルな JavaScript 定数または関数です。リポジトリの includes
ディレクトリでインクルードを定義します。これらは JavaScript や SQLX ファイル内のリポジトリ全体で再利用できます。
次のコードサンプルは、includes/constants.js
ファイル内の launch_date
定数の定義を示しています。
// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };
次のコードサンプルは、SQLX ファイルのテーブル定義クエリで参照される launch_date
定数を示しています。
config {type: "table"}
SELECT * FROM source_table WHERE date > ${constants.launch_date}
パッケージを使用して複数のリポジトリ間でコードを再利用する
パッケージは、インポートして複数の Dataform リポジトリ間で使用し、SQL ワークフロー開発を効率化できる JavaScript コードのコレクションです。
Dataform で独自のカスタム パッケージを作成することも、GitHub のオープンソース Dataform ページで公開されているオープンソースの Dataform パッケージを使用することもできます。
Dataform でオープンソース パッケージを使用する例については、Dataform で変化が緩やかなディメンションを使用するをご覧ください。
Dataform でパッケージの内容を使用するには、パッケージを Dataform リポジトリにインストールし、パッケージを使用する個々の JavaScript または SQLX ファイルにインポートする必要があります。 詳細については、Dataform にパッケージをインストールするをご覧ください。
Dataform リポジトリに非公開 NPM パッケージをインストールするには、パッケージを認証する必要があります。
JavaScript で SQL ワークフローを作成する
SQLX で SQL ワークフローを開発する方法や、SQLX と JavaScript を組み合わせる方法の代わりに、JavaScript のみを使用して .js
ファイルに SQL ワークフロー オブジェクトを作成できます。1 つの JavaScript ファイル内に、Dataform グローバル メソッドと任意の JavaScript ES5 コード(ループや定数など)を使用して複数の SQL ワークフロー オブジェクトを作成できます。各 Dataform グローバル JavaScript メソッドには、作成されたオブジェクトの構成に使用できるプロパティが含まれています。
Dataform で JavaScript のみを使用して、次の SQL ワークフロー オブジェクトを作成できます。
- データソースの宣言
- テーブル
- 手動アサーション
- カスタム SQL オペレーション
JavaScript のみを使用して SQL ワークフロー オブジェクトを作成する方法については、JavaScript を使用して Dataform SQL ワークフローを作成するをご覧ください。
次のステップ
- インクルードを使用して変数と関数を再利用する方法については、Dataform でインクルードを使用して変数と関数を再利用するをご覧ください。
- パッケージを作成する方法については、Dataform にパッケージを作成するをご覧ください。
- パッケージをインストールする方法については、Dataform にパッケージをインストールするをご覧ください。
- 非公開パッケージを認証する方法については、非公開パッケージを認証するをご覧ください。
- Dataform でオープンソース パッケージを使用する方法については、Dataform で変化が緩やかなディメンションを使用するをご覧ください。
- JavaScript を使用して SQL ワークフローを作成する方法については、JavaScript を使用して Dataform SQL ワークフローを作成するをご覧ください。