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

このドキュメントでは、テーブル定義ファイルで追加のテーブル設定を構成する方法について説明します。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"
     }
    
    1. OVERRIDDEN_SCHEMA は、テーブルを作成する BigQuery データセットに置き換えます。

    2. OVERRIDDEN_DATABASE は、テーブルを作成する BigQuery プロジェクトの ID に置き換えます。

    3. OVERRIDDEN_NAME は、SQLX テーブル定義ファイル名とは異なるテーブルの名前に置き換えます。

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

  • オーバーライドされたテーブル名でテーブルを参照するには、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. 省略可: 複数のステートメントを追加するには、ステートメントを --- で区切ります。

次のサンプルコードは、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 ステートメントを追加します。

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

  post_operations {
    GRANT SELECT ON ${self()} TO GROUP "allusers@example.com";
    GRANT SELECT ON ${self()} TO GROUP "otherusers@example.com";
  }

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

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

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

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

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

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

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

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

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

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

次のステップ