创建进程

用量

层次结构
create_process
默认值


接受
一个或多个 sql_step 子参数

定义

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

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

您还可以使用 create_process 来支持方言,例如 Google 预测 BigQuery ML 机器学习模型。

create_process 参数表示您正在为派生表编写完整的 CREATE 语句,包括所有索引。如需使用 create_process 为派生表添加索引,请使用 sql_step 参数指定索引的 SQL。

对于使用 create_process 定义的 PDT,您无法使用以下任一参数:

  • indexes
  • cluster_keys
  • distribution
  • distribution_style
  • partition_keys
  • sortkeys
  • 示例

    通过两个步骤在 MySQL 数据库上创建 ctasless_customer_order_facts 永久性派生表。首先,发出由第一个 sql_step 子参数定义的 CREATE TABLE SQL 语句。然后,使用 SELECT 语句(由第二个 sql_step 子参数定义)发出 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 和 Datagroup 维护时间表设置(默认为 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 语句才能创建准确的增量。