create_process

用途

derived_table: {
  create_process: {
    sql_step:
      CREATE TABLE ${SQL_TABLE_NAME}
      (customer_id int(11),
      lifetime_orders int(11)) ;;
    sql_step:
      INSERT INTO ${SQL_TABLE_NAME}
      (customer_id,
      lifetime_orders)
      SELECT customer_id, COUNT(*)
      AS lifetime_orders
      FROM order
      GROUP BY customer_id ;;
  }
}
階層
create_process
デフォルト値
なし

許可
1 つ以上の sql_step サブパラメータ

定義

データベース言語でカスタム データ定義言語(DDL)コマンドを使用する場合は、create_process を使用して永続的な派生テーブル(PDT)を作成できます。create_process は、リストに記載された順に実行される SQL ステートメントのリストを定義します。個々の SQL ステートメントは、sql_step サブパラメータを使用して指定します。各 sql_step サブパラメータには、任意の有効な SQL クエリを含めることができます。複数の sql_step サブパラメータを定義できます。これらのサブパラメータは、指定された順に 1 つずつ実行されます。Looker は、通常の Looker のエラー訂正を行わずに、sql_step サブパラメータのステートメントをそのまま発行します。

たとえば、一部のデータベース言語は、単一の SQL ステートメントとして発行される CREATE TABLE as SELECT をサポートしていません。個別の SQL ステートメントが必要です。そのため、これらの言語では従来の SQL ベースの永続派生テーブルを作成できません。create_process パラメータは、順番に発行される個別の SQL ステートメントのリストを作成することで、PDT を作成する別の方法を提供します。

また、create_process を使用して、Google の予測 BigQuery ML 機械学習モデルなどの言語をサポートすることもできます。

create_process パラメータは、派生テーブルの完全な CREATE ステートメント(インデックスを含む)を記述することを示します。create_process を使用して派生テーブルのインデックスを追加するには、sql_step パラメータを使用してインデックスの SQL を指定します。

create_process を使用して定義された PDT では、次のパラメータは使用できません。

MySQL データベースに ctasless_customer_order_facts 永続的な派生テーブルを作成する手順は次のとおりです。まず、最初の sql_step サブパラメータで定義された CREATE TABLE SQL ステートメントを発行します。次に、2 番目の sql_step サブパラメータで定義された SELECT ステートメントを使用して、INSERT INTO SQL ステートメントを発行します。

view: ctasless_customer_order_facts {
  derived_table: {
    datagroup_trigger: some_datagroup
    create_process: {
      sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
                         customer_id int(11),
                         lifetime_orders int(11)
                       ) ;;
      sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
                        SELECT customer_id, COUNT(*) AS lifetime_orders
                         FROM order
                         GROUP BY customer_id ;;
    }
  }
}

注意点

${SQL_TABLE_NAME} 置換演算子

${SQL_TABLE_NAME} 置換演算子を使用すると、作成中の PDT の計算された名前を置換できます。これにより、SQL ステートメントに LookML の view パラメータで指定された PDT 名が正しく含まれるようになります。

create_process は、${SQL_TABLE_NAME} 置換演算子で示された名前のテーブルを作成する必要があります。そうしないと、接続の [データグループと PDT のメンテナンス スケジュール] の設定で指定されたトリガー チェック間隔(デフォルトは 5 分)ごとに、テーブルがゼロから再構築されます。これにより、データベースまたはデータ ウェアハウスで予期しないクエリ トラフィックが発生する可能性があります。

sql_create を使用して 1 つのステップで PDT を作成する

データベース ダイアレクトでカスタム DDL コマンドが必要で、PDT を 1 つのステップで作成する場合は、sql_create を使用して、実行する完全な SQL CREATE ステートメントを定義し、PDT を 1 つのステップで作成できます。

create_process で定義されたテーブルは増分 PDT に使用できません

増分 PDT として使用するには、SQL ベースの PDT に sql パラメータを使用して定義されたクエリが必要です。sql_create パラメータまたは create_process パラメータで定義された SQL ベースの PDT は、段階的に構築することはできません。

これは、Looker が増分 PDT の増分を作成するために INSERT コマンドまたは MERGE コマンドを使用するためです。派生テーブルを、カスタムデータ定義言語(DDL)ステートメントを使用して定義することはできません。というのは、Looker は、正確な増分作成のためにどの DDL ステートメントが必要になるかを判別できないからです。