用法
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,您不能使用以下任何参数:indexescluster_keysdistributiondistribution_stylepartition_keyssortkeys
示例
通过两个步骤在 MySQL 数据库中创建ctasless_customer_order_facts永久性派生表。首先,发出由第一个 sql_step 子形参定义的 CREATE TABLE SQL 语句。其次,发出包含 SELECT 语句的 INSERT INTO SQL 语句,该语句由第二个 sql_step 子参数定义:
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 语句。