追加のテーブル設定を構成する

このドキュメントでは、テーブル定義ファイルで追加のテーブル設定を行う方法について説明します。Dataform コアでは、pre_operationspost_operations を定義して、テーブルの作成前または作成後に SQL ステートメントを実行できます。databaseschema などのテーブル設定をオーバーライドし、テーブルの作成を無効にすることもできます。

始める前に

  1. Google Cloud コンソールの [Dataform] ページに移動します。

    Dataform に移動

  2. リポジトリを作成または選択します。

  3. 開発ワークスペースを作成または選択します。

  4. テーブルを作成する

必要なロール

追加のテーブル設定を構成するために必要な権限を取得するには、ワークスペースの Dataform 編集者 roles/dataform.editor) IAM ロールの付与を管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

テーブルの設定をオーバーライドする

選択したテーブルのスキーマ、データベース、名前をオーバーライドできます。

デフォルトでは、テーブルは dataform.json で設定したスキーマとデータベース構成に従います。テーブルの名前は、テーブル定義 SQLX ファイルの名前と同じです。

選択したテーブルのスキーマと名前をオーバーライドする手順は次のとおりです。

  1. 開発ワークスペースに移動します。

  2. [ファイル] ペインで definitions/ を開きます。

  3. SQLX テーブル定義ファイルを開きます。

  4. config ブロックには、次のコード スニペットを入力します。

     {
       schema: "OVERRIDDEN_SCHEMA",
       database: "OVERRIDDEN_DATABASE",
       name: "OVERRIDDEN_NAME"
     }
    

    以下を置き換えます。

    • OVERRIDDEN_SCHEMA: テーブルを作成する BigQuery データセット

    • OVERRIDDEN_DATABASE: テーブルを作成する BigQuery プロジェクトの ID

    • OVERRIDDEN_NAME: テーブルの名前。SQLX テーブル定義ファイル名とは異なります。

  5. 省略可: [書式] をクリックします。

オーバーライドされたテーブル名を持つテーブルを参照する

  • オーバーライドされたテーブル名を持つテーブルを参照するには、ref 関数で、name: "" で設定されたオーバーライドされたテーブル名を入力します。

次のコードサンプルは、overridden_name にオーバーライドされた名前のテーブルを参照します。

  SELECT * FROM ${ref("overridden_name")}

テーブルの作成前に実行する SQL ステートメントを定義する

BigQuery で選択したテーブルを作成する前に、1 つ以上の SQL ステートメントを実行するように Dataform を構成できます。Dataform が選択したテーブルを作成する前に SQL ステートメントを実行するには、テーブル定義 SQLX ファイルの pre_operations ブロックにステートメントを追加します。

Dataform が特定のテーブルを作成する前に実行されるカスタム SQL ステートメントを作成するには、次の手順を行います。

  1. 開発ワークスペースに移動します。

  2. [ファイル] ペインで definitions/ を開きます。

  3. SQLX テーブル定義ファイルを開きます。

  4. config ブロックの外側に pre_operations { ... } を入力します。

  5. pre_operations { ... } に SQL ステートメントを追加します。

  6. 省略可:複数のステートメントを追加する場合は、--- で区切ります。

  7. 省略可: [書式] をクリックします。

次のコードサンプルは、SELECTステートメントで使用できる一時関数を作成する pre_operations ステートメントを示しています。

  pre_operations {
    CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
      RETURNS FLOAT64
      AS ((x + 4) / y);
  }

テーブルの作成後に実行する SQL ステートメントを定義する

BigQuery で選択したテーブルを作成した後、1 つ以上の SQL ステートメントを実行するように Dataform を構成できます。Dataform で選択されたテーブルの作成後に SQL ステートメントを実行するには、テーブル定義 SQLX ファイルの post_operations ブロックにステートメントを追加します。post_operations ブロックには複数の SQL ステートメントを追加できます。

Dataform が特定のテーブルを作成した後に実行されるカスタム SQL ステートメントを作成するには、次の操作を行います。

  1. 開発ワークスペースに移動します。

  2. [ファイル] ペインで definitions/ を開きます。

  3. SQLX テーブル定義ファイルを開きます。

  4. config ブロックの外側に post_operations { ... } を入力します。

  5. post_operations { ... } 内に SQL ステートメントを追加します。

  6. 省略可: [書式] をクリックします。

次のコードサンプルは、作成されたテーブルへのアクセス権をグループに付与する post_operations ステートメントを示しています。

    post_operations {
      GRANT `roles/bigquery.dataViewer`
      ON
      TABLE ${self()}
      TO "group:allusers@example.com", "user:otheruser@example.com"
    }

テーブルの作成を無効にする

Dataform で選択したテーブルが BigQuery で作成されないようにするには、SQLX テーブル定義ファイルでテーブルを無効にします。 Dataform は、無効なテーブルを依存関係グラフに保持しますが、コンパイルして作成しません。これは、たとえば、テーブルが失敗して問題を修正している間にワークフロー全体が失敗するのを防ぐ場合に役立ちます。

テーブルを無効にする手順は次のとおりです。

  1. 開発ワークスペースに移動します。

  2. [ファイル] ペインで definitions/ を開きます。

  3. SQLX テーブル定義ファイルを選択します。

  4. ファイルの config ブロックに「disabled: true」と入力します。

  5. 省略可: [書式] をクリックします。

次のコードサンプルは、無効なテーブルを示しています。

  config {
    type: "table",
    disabled: true
  }

  select * from ${ref("source_data")}

次のステップ