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
默认值
无

接受
一个或多个 sql_step 子形参

定义

如果您的数据库方言使用自定义数据定义语言 (DDL) 命令,您可以使用 create_process 创建持久性派生表 (PDT)。create_process 定义了将按列出的顺序执行的 SQL 语句列表。每个单独的 SQL 语句都使用 sql_step 子参数指定。每个 sql_step 子参数都可以包含任何合法的 SQL 查询。您可以定义多个 sql_step 子形参,它们将按指定顺序依次执行。Looker 会按原样发出 sql_step 子参数中的语句,而不会进行 Looker 常规的错误更正。

例如,某些数据库方言不支持作为单个 SQL 语句发布的 CREATE TABLE as SELECT;它们需要单独的 SQL 语句。因此,无法基于这些方言创建传统的基于 SQL 的永久性派生表。create_process 参数提供了一种创建 PDT 的替代方法,即创建按顺序发出的一系列单独的 SQL 语句。

您还可以使用 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 语句。其次,发出 INSERT INTO SQL 语句,其中包含由第二个 sql_step 子参数定义的 SELECT 语句:

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 一步创建 PDT

如果您的数据库方言需要自定义 DDL 命令,并且您想一步创建 PDT,则可以使用 sql_create 定义完整的 SQL CREATE 语句,以便一步执行并创建 PDT。

使用 create_process 定义的表无法用于增量 PDT

如需用作增量 PDT,基于 SQL 的 PDT 必须使用 sql 参数定义查询。使用 sql_create 参数或 create_process 参数定义的基于 SQL 的 PDT 无法以增量方式构建。

这是因为 Looker 使用 INSERT 或 MERGE 命令来创建增量 PDT 的增量。派生表无法使用自定义数据定义语言 (DDL) 语句进行定义,因为 Looker 无法确定创建准确增量所需的 DDL 语句。