このドキュメントでは、次の方法について説明します。
- Dataform リポジトリに JavaScript パッケージをインストールする。
- 非公開 NPM パッケージを認証して、リポジトリにインストールできるようにする。
- ワークフローの開発に使用できるカスタム JavaScript パッケージを作成する。
始める前に
コンソールで、[Dataform] ページに移動します。 Google Cloud
次のいずれかまたは両方を行います。
- リポジトリにパッケージをインストールする、または非公開 NPM パッケージを認証してインストールできるようにするには、次の操作を行います。
- リポジトリを作成または選択します。
- 開発ワークスペースを作成または選択します。
- 省略可: 非公開パッケージをインストールするには、 非公開パッケージを認証します。
- リポジトリに
package.jsonファイルが含まれていない場合は、package.jsonを作成して Dataform コアパッケージを移動します。
- パッケージを作成するには、次の操作を行います。
- パッケージ専用の Dataform リポジトリ を作成します。リポジトリ名をパッケージの名前に合わせます。
- リポジトリを接続して、 パッケージをホストするサードパーティの Git リポジトリに接続します。
- Dataform リポジトリに ワークスペースを作成して初期化します。
- リポジトリにパッケージをインストールする、または非公開 NPM パッケージを認証してインストールできるようにするには、次の操作を行います。
必要なロール
このドキュメントのタスクを実行するために必要な権限を取得するには、管理者に次の IAM のロールを付与するよう依頼してください。
- ワークスペースとリポジトリに対する Dataform 編集者(
roles/dataform.editor) - リポジトリの Dataform 管理者 (
roles/dataform.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
パッケージをインストールする
このセクションでは、JavaScript パッケージをインストールして JavaScript ファイルと SQLX ファイルにインポートし、パッケージを使用して Dataform でワークフローを開発する方法について説明します。
Dataform でパッケージを使用するには、リポジトリにインストールする必要があります。
Dataform には、次の種類のパッケージをインストールできます。
- 公開されている公開 NPM パッケージ
- 公開されていない公開 NPM パッケージ
- 認証済みの非公開 NPM パッケージ
JavaScript ファイルまたは SQLX ファイルでパッケージを使用するには、パッケージの選択したコンテンツをファイルにインポートする必要があります。選択したコンテンツの代わりに、パッケージ全体を JavaScript ファイルまたは SQLX ファイルにインポートすることもできます。
本番環境でのパッケージのインストールに関する問題を回避するため、次のことをおすすめします。
package.jsonでパッケージ バージョンを明示的に指定します(例:3.0.0)。package.jsonの他のdependenciesオプション (>versionなど)は使用しないでください。新しいパッケージ バージョンを非本番環境でテストします。さまざまなワークフロー ライフサイクル環境の構成の詳細については、 ワークフロー ライフサイクルのベスト プラクティスをご覧ください。
パッケージを依存関係として追加する
Dataform リポジトリにパッケージをインストールするには、package.json ファイルに依存関係として追加する必要があります。
- ワークスペースの [ファイル] ペインで
package.jsonを選択します。 パッケージを
dependenciesブロックに追加します。公開されている公開 NPM パッケージを次の形式で追加します。
"PACKAGE-NAME": "PACKAGE-VERSION"以下を置き換えます。
- PACKAGE-NAME は、パッケージの名前に置き換えます。
- PACKAGE-VERSION は、
公開されている公開 NPM パッケージの最新バージョンに置き換えます。パッケージのインストールに関する問題を回避するため、バージョンを明示的に指定します(例:
3.0.0)。
公開されていない公開 NPM パッケージを次の形式で追加します。
"PACKAGE-NAME": "PACKAGE-URL"以下を置き換えます。
- PACKAGE-NAME は、パッケージの名前に置き換えます。
- PACKAGE-URL は、サードパーティ
パッケージ リポジトリの
tar.gzURL(https://github.com/user/sample-package-repository/archive/master.tar.gzなど)に置き換えます。
認証済みの非公開 NPM パッケージを次の形式で追加します。
"REGISTRY-SCOPE/PACKAGE-NAME": "PACKAGE-URL"以下を置き換えます。
- REGISTRY-SCOPE は、パッケージの名前に置き換えます。
REGISTRY-SCOPE は、リポジトリの
.npmrcファイルで定義されているレジストリ スコープ と一致する必要があります。 - PACKAGE-NAME は、パッケージの名前に置き換えます。
- PACKAGE-URL は、パッケージ リポジトリの
tar.gzURL(https://github.com/user/sample-package-repository/archive/master.tar.gzなど)に置き換えます。
- REGISTRY-SCOPE は、パッケージの名前に置き換えます。
REGISTRY-SCOPE は、リポジトリの
[パッケージをインストール] をクリックします。
次のコードサンプルは、.package.json ファイルに追加された公開されているオープンソースの Slowly changing dimensions パッケージを示しています。
```json
{
"name": "repository-name",
"dependencies": {
"@dataform/core": "2.0.3",
"dataform-scd": "https://github.com/dataform-co/dataform-scd/archive/0.3.tar.gz"
}
}
```
パッケージの関数または定数を Dataform の JavaScript ファイルにインポートする
Dataform の JavaScript ファイル内でパッケージの関数または定数を使用するには、まずファイルにインポートする必要があります。
パッケージの関数または定数を JavaScript ファイルにインポートする手順は次のとおりです。
- ワークスペースの [ファイル] ペインで、パッケージを使用する
.jsファイルを選択します。 ファイルで、次の形式で関数または定数をインポートします。
const { EXPORT-NAME } = require("PACKAGE-NAME");- EXPORT-NAME は、使用する関数または
定数の名前に置き換えます。これは、
module.exportsの パッケージindex.jsファイルで宣言されています。 - PACKAGE-NAME は、使用するパッケージの 名前に置き換えます。
- EXPORT-NAME は、使用する関数または
定数の名前に置き換えます。これは、
次のコードサンプルは、postoffice パッケージの getDomain 関数をインポートして JavaScript ファイルで使用する方法を示しています。
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const { getDomain } = require("postoffice");
getDomain();
パッケージ全体を Dataform の JavaScript ファイルにインポートする
選択した関数または定数を JavaScript ファイルにインポートするのではなく、パッケージ全体を JavaScript ファイルにインポートする手順は次のとおりです。
- ワークスペースの [ファイル] ペインで、パッケージを使用する
.jsファイルを選択します。 ファイルで、次の形式でパッケージをインポートします。
const CONSTANT-NAME = require("PACKAGE-NAME");- CONSTANT-NAME は、定数の名前に置き換えます。
- PACKAGE-NAME は、使用するパッケージの 名前に置き換えます。
次のコードサンプルは、インポートされた postoffice パッケージの getDomain 関数を JavaScript ファイルで使用する方法を示しています。
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const postoffice = require("postoffice");
postoffice.getDomain();
パッケージの関数または定数を Dataform の SQLX ファイルにインポートする
SQLX ファイル内でパッケージの関数または定数を使用するには、まずファイルにインポートする必要があります。
パッケージの関数または定数を SQLX ファイルにインポートする手順は次のとおりです。
- ワークスペースの [ファイル] ペインで、パッケージを使用する
.sqlxファイルを選択します。 ファイルに次の
jsブロックを入力します。js { const { EXPORT-NAME } = require("PACKAGE-NAME"); }- EXPORT-NAME は、パッケージ
index.jsファイルのmodule.exportsで宣言された、使用する関数または定数の名前に置き換えます。 - PACKAGE-NAME は、使用するパッケージの 名前に置き換えます。
- EXPORT-NAME は、パッケージ
次のコードサンプルは、postoffice パッケージの getDomain 関数を js ブロックにインポートして SQLX ファイルの SELECT ステートメントで使用する方法を示しています。
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const { getDomain } = require("postoffice");
}
SELECT ${getDomain("email")} as test
パッケージ全体を Dataform の SQLX ファイルにインポートする
選択した関数または定数を JavaScript ファイルにインポートするのではなく、パッケージ全体を SQLX ファイルにインポートする手順は次のとおりです。
- ワークスペースの [ファイル] ペインで、パッケージを使用する
.sqlxファイルを選択します。 ファイルで、次の形式でパッケージをインポートします。
js { const CONSTANT-NAME = require("PACKAGE-NAME"); }- CONSTANT-NAME は、定数の名前に置き換えます。
- PACKAGE-NAME は、使用するパッケージの 名前に置き換えます。
次のコードサンプルは、postoffice パッケージを js ブロックにインポートし、その getDomain 関数を SQLX ファイルの SELECT ステートメントで使用する方法を示しています。
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const postoffice = require("postoffice");
}
SELECT ${postoffice.getDomain("email")} as test
非公開パッケージを認証する
このセクションでは、Dataform で非公開 NPM パッケージを認証して、Dataform リポジトリにインストールできるようにする方法について説明します。
Dataform リポジトリに非公開 NPM パッケージ をインストールしてワークフローの開発に使用するには、まず Dataform でパッケージを認証する 必要があります。認証プロセスは、リポジトリ内の最初の非公開パッケージとリポジトリ内の後続の非公開パッケージで異なります。
Dataform リポジトリで最初の非公開パッケージを認証する
Dataform で非公開 NPM パッケージを認証するには、まず最初の非公開 NPM パッケージを Dataform リポジトリにインストールする前に、次の作業を行う必要があります。
非公開 NPM パッケージの認証トークンを Dataform リポジトリに保存する専用の Secret Manager シークレットを作成します。
- NPM レジストリから取得したパッケージの認証トークンをシークレットに追加します。
非公開 NPM パッケージのすべての認証トークンを 1 つのシークレット内のリポジトリに保存する必要があります。Dataform リポジトリごとに 1 つの専用シークレットを作成する必要があります。シークレットは JSON 形式にする必要があります。
シークレットをアップロードして Dataform リポジトリに保存します。
.npmrcファイルを作成し、パッケージの認証トークン をファイルに追加します。.npmrcファイルの認証トークンは、アップロードされたシークレットの認証トークンと一致する必要があります。
非公開 NPM パッケージを認証したら、Dataform リポジトリにパッケージを インストールできます。
非公開パッケージの認証用のシークレットを作成する
Dataform リポジトリで非公開 NPM パッケージを認証するには、Secret Manager のシークレットを作成し、シークレット内の Dataform リポジトリにインストールするすべての非公開パッケージの認証トークンを定義する必要があります。非公開 NPM パッケージごとに 1 つの認証トークンを定義し、リポジトリごとに 1 つのシークレットにすべての認証トークンを保存します。シークレットは JSON 形式にする必要があります。
非公開 NPM パッケージの認証トークンを使用してシークレットを作成するには、次の手順に従います。
Secret Manager でシークレットを作成します。
- [シークレットの値] フィールドに、次の形式で 1 つ以上の認証トークンを入力します。
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }以下を置き換えます。
- AUTHENTICATION_TOKEN_NAME: 認証するパッケージを識別するトークンの一意の名前。
- TOKEN_VALUE: NPM レジストリから取得した認証トークンの値。
Dataform サービス エージェントにシークレットへのアクセス権を付与します。
Dataform サービス エージェント ID は次の形式です。
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com- アクセス権を付与する際は、Dataform サービス エージェントに
roles/secretmanager.secretAccessorロールを付与してください。
- アクセス権を付与する際は、Dataform サービス エージェントに
非公開パッケージ認証用のシークレットを Dataform リポジトリにアップロードする
Dataform リポジトリに非公開 NPM パッケージを初めてインストールする前に、パッケージの認証トークンを含むシークレットをリポジトリにアップロードします。
非公開 NPM パッケージの認証トークンを含むシークレットを Dataform リポジトリにアップロードする手順は次のとおりです。