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

このドキュメントでは、テーブル定義ファイルで追加のテーブル設定を構成する方法について説明します。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. 省略可: [書式] をクリックします。

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

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

次のコードサンプルは、名前が 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")}

次のステップ