用量
derived_table:{ ... }
}
层次结构
derived_table |
默认值
无 |
定义
您可以将派生表视为数据库中的普通表。您可以创建以下任一类型的派生表:
- 使用
explore_source
参数定义的原生派生表 - 一个基于 SQL 的派生表,它使用您使用
sql
参数定义的原始 SQL 查询
某些极端情况下不允许使用
sql
参数。在这种情况下,Looker 支持以下参数来为 PDT 定义 SQL 查询:create_process
sql_create
使用
sql
、create_process
或sql_create
参数,在所有这些情况下,您都将使用 SQL 查询定义派生表,因此这些表都被视为基于 SQL 的派生表。
derived_table
参数会在 LookML 的开头开始,您可以在此部分定义应如何派生派生表、应使用哪些索引或键以及应何时重新生成派生表。
派生表可以是临时派生表,随用户请求数据而临时计算,也可以是使用持久性策略在数据库中保留的永久性派生表 (PDT)。
如果您的管理员已启用增量 PDT 实验室功能,并且您的方言支持,那么您就可以在项目中使用增量 PDT。增量 PDT 是一种 PDT,通过向表附加数据而不是逐步完整构建表来逐步构建。如需详细了解增量永久性磁盘,请参阅增量永久性磁盘文档页面。
如需详细了解派生表,请参阅 Looker 中的派生表文档页面。
示例
使用 explore_source
参数创建一个 customer_order_facts
原生派生表:
view: customer_order_facts {
derived_table: {
explore_source: order {
column: customer_id { field: order.customer_id }
column: lifetime_orders { field: order.count }
column: lifetime_spend { field: order.total_spend }
}
}
}
使用 sql
参数创建一个 customer_order_facts
派生表:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT(*) AS lifetime_orders,
SUM(total) AS lifetime_spend
FROM
order
GROUP BY
customer_id ;;
}
}
注意事项
避免过度使用派生表来创建纯 SQL 解决方案
精通 SQL 的用户通常使用派生表来解决复杂的 SQL 查询,然后用户便可查询这些结果。虽然有时可能需要这样做,但它还可能会错过 LookML 可重用的模块化特性,并让用户只能局限于探索数据。
我们的一般建议是考虑 SQL 查询的基本用途,然后将该逻辑转换为 LookML,而不是将现有查询复制并粘贴到派生表中。如果您在创建不依赖于派生表的分析时需要帮助,Looker 支持分析人员将依照最佳做法提供帮助。
派生表支持的数据库方言
临时派生表支持的数据库方言
为了让 Looker 支持 Looker 项目中的派生表,您的数据库方言也必须支持这些表。下表显示了最新版本 Looker 中支持派生表的方言:
为永久性派生表支持的数据库方言
为了让 Looker 在 Looker 项目中支持 PDT,您的数据库方言也必须支持 PDT。
如需支持任何类型的持久派生表(基于 LookML 或基于 SQL),除了其他要求之外,方言也必须支持对数据库的写入。有一些只读数据库配置不允许持久性功能(最常见的 Postgres 热交换副本数据库)。在这些情况下,您可以改用临时派生表。
下表显示了最新版 Looker 中支持持久的基于 SQL 的派生表的方言:
如需支持永久性原生派生表(具有基于 LookML 的查询),方言还必须支持 CREATE TABLE
DDL 函数。下面列出了最新版 Looker 中支持原生(基于 LookML)的派生表的方言:
使用 OAuth 的 Snowflake 连接不支持 PDT。
适用于增加 PDT 的数据库方言
为了让 Looker 在您的 Looker 项目中支持增量 PDT,您的数据库方言必须支持支持删除和插入行的数据定义语言 (DDL) 命令。
下表显示了最新版 Looker 中的哪些方言支持增加 PDT: