派生表

用量

视图:my_view {
derived_table:{ ... }
}
层次结构
derived_table
默认值


定义

您可以将派生表视为数据库中的普通表。您可以创建以下任一类型的派生表:

某些极端情况下不允许使用 sql 参数。在这种情况下,Looker 支持以下参数来为 PDT 定义 SQL 查询:

  • create_process
  • sql_create
  • 使用 sqlcreate_processsql_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: