publish_as_db_view

用法

view: my_view {
  derived_table: {
    publish_as_db_view: yes
    ...
  }
}
层次结构
publish_as_db_view

- 或 -

publish_as_db_view
默认值
no

接受
布尔值(yesno

特殊规则
  • 在将持久化表的 LookML 部署到生产环境并使用 publish_as_db_view: yes 后,Looker 重新生成器会在下一个周期发布(创建)稳定的数据库视图
  • 只有使用数据组或 sql_trigger_value 持久化策略的持久化表才支持稳定的数据库视图。不支持使用 persist_for 的持久化表。
  • 只有对临时架构具有 CREATE VIEW 权限的数据库连接才支持稳定的数据库视图。

定义

借助 publish_as_db_view 参数,您可以为持久化表(包括 永久性派生表汇总表)添加标记,以便在 Looker 外部进行查询。对于将 publish_as_db_view 设置为 yes 的持久化表,Looker 会在数据库中为持久化表创建稳定的数据库视图。稳定的数据库视图是在数据库本身中创建的,因此可以在 Looker 外部进行查询。“稳定的数据库视图”的概念与“LookML 视图”不同,因为 LookML 视图存在于 Looker 实例中,而不是数据库本身中。

在将持久化表的 LookML 部署到生产环境并使用 publish_as_db_view: yes 后,Looker 重新生成器会在下一个周期发布(创建)稳定的数据库视图。

示例

为 PDT 创建稳定的数据库视图

创建 e_flights_pdt PDT,并在数据库中为其创建稳定的数据库视图:


view: e_flights_pdt {
  derived_table: {
    publish_as_db_view: yes
    datagroup_trigger: e_flights_default_datagroup
    explore_source: ontime {
      timezone: "America/Los_Angeles"
      column: flight_num {}
      column: carrier {}
      column: arr_date {}
    }
  }
  dimension: flight_num {}
  dimension: carrier {}
  dimension: arr_date {
    type: date
  }
}

在将 PDT 的 LookML 部署到生产环境后,Looker 重新生成器会在下一个周期发布 e_flights_pdt 的稳定数据库视图。Looker 构建 PDT 后,您就可以在数据库中查询稳定的数据库视图。

为汇总表格创建稳定的数据库视图

创建 weekly_orders 汇总表格,并在数据库中为其创建稳定的数据库视图:

explore: orders {
  aggregate_table: weekly_orders {
    materialization: {
      sql_trigger_value: SELECT CURDATE() ;;
      publish_as_db_view:  yes
    }
    query: {
      dimensions: [orders.status, orders.created_week]
      measures: [orders.count]
    }
  }
}

在将汇总表格的 LookML 部署到生产环境后,Looker 重新生成器会在下一个周期发布 weekly_orders 汇总表格的稳定数据库视图。Looker 构建汇总表格后,您就可以在数据库中查询稳定的数据库视图。

访问稳定的数据库视图

为持久化表发布稳定的数据库视图后,您可以在获取稳定名称后直接查询该视图。您可以通过两种方式获取持久化表的稳定视图名称:

PDT 详细信息模态窗口

如果您是管理员或具有 see_pdts 权限的用户,则可以使用 Looker 管理 部分中的 Persistent Derived Tables (永久性派生表)页面获取持久化表的稳定数据库视图名称:

  1. 点击 Looker 主菜单 图标 ,然后选择 Admin(管理),前提是 Admin(管理)菜单尚未显示。(如果您位于 Looker 主菜单Explore (探索)或 Develop (开发)部分,可能需要点击后退箭头才能看到 Admin (管理)菜单。)
  2. Admin (管理)菜单中,选择 Persistent Derived Tables (永久性派生表)。
  3. Persistent Derived Tables (永久性派生表)页面上,搜索持久化表的名称。
  4. 点击持久化表对应的三点状菜单,然后选择 PDT Details (PDT 详细信息)。
  5. PDT Details (PDT 详细信息)模态窗口中,找到 Stable Name (稳定名称)字段。

如需直接查询稳定视图表,请在表名称前添加底层存储架构名称。例如,如果底层存储架构名称为 tmp,您可以使用如下命令查询稳定的数据库视图:


SELECT * from tmp.CL_e_redlook_e_redlook_inc_pdt

探索的 SQL 标签页

如果您无权访问 Persistent Derived Tables (永久性派生表)管理页面,则可以使用探索的 SQL 标签页中包含的信息来确定持久化表的稳定视图名称。稳定视图名称采用以下格式:

[scratch schema name].[connection registration key]_[model_name]_[view_name]

例如,如果您有一个持久化表,该表位于名为 faa 的模型中,并且有一个名为 e_flights_pdt 的视图,则只需要临时架构名称和连接注册密钥。您可以在持久化表查询的 Data (数据)部分中的 SQL 标签页中找到这两项信息。在 SQL 标签页的 CREATE TABLEFROM 语句中,您可以找到如下信息:

  • 连接注册密钥为两个字符;根据数据库方言的不同,它将位于美元符号或持久化表的表名称中的第一个下划线之后。
  • 临时架构名称是 CREATE TABLEFROM 之后的字符串的开头,位于“.”之前

在以下所有示例查询中,连接注册密钥为 LB,底层存储架构名称为 tmp

下面是一个 Looker 生成的 SQL 查询示例,其中包含一个 CREATE TABLE 语句,适用于在连接注册密钥之前使用美元符号的方言。视图名称为e_flights_pdt,生成的派生表名称为tmp.LR$LBC5Q1576702903774_e_flights_pdt

generate derived table e_flights_pdt
Building e_flight::e_flights_pdt in dev mode on instance b6ff28049851f1954156526c66ca9912
CREATE TABLE tmp.LR$LBC5Q1576702903774_e_flights_pdt (INDEX(flight_num)) SELECT
  ontime.flight_num AS `flight_num`
  ontime.carrier AS `carrier,
    (TIMESTAMP(DATE (CONVERT_TZ(ontime.arr_time, 'UTC', 'America/Los_Angeles')))) AS
      `arr_date``
FROM `flightstats`.`ontime` AS `ontime`
GROUP BY
  1,
  2,
  3
-- finished e_flights_pdt => tmp.LR$LBC5Q1576702903774_e_flights_pdt

SELECT
  e_flights_pdt.flight_num AS `e_flights_pdt.flight_num`,
  e_flights_pdt.carrier AS `e_flights_pdt.carrier`
FROM tmp.LR$LBC5Q1576702903774_e_flights_pdt AS e_flights_pdt
GROUP BY
  1,
  2
ORDER BY
  e_flights_pdt.flight_num
LIMIT 5

下面是一个 Looker 生成的 SQL 查询示例,其中包含一个 FROM 语句,适用于在连接注册密钥之前使用下划线符号的方言。视图名称为 e_flights_pdt,生成的派生表名称为 tmp.LR_LBFIM1580333699953_e_flights_pdt


--use existing e flights pdt in tmp.LR_LBFIM1580333699953_e_flights_pdt

SELECT
  e_flights_pdt.id AS `e_flights_pdt.id`,
  DATE(e_flights_pdt.faa_event_date) AS `e_flights_pdt. faa_event_date`
FROM tmp.LR_LBFIM1580333699953_e_flights_pdt AS e_flights_pdt

GROUP BY 1,2
ORDER BY DATE(e_flights_pdt.faa_event_date) DESC
LIMIT 5

同样,稳定的数据库视图采用以下格式:

[scratch schema name].[connection registration key]_[model_name]_[view_name]

以下是所有值:

  • [scratch schema name]tmp
  • [connection registration key]LB
  • [model_name]faa
  • [view_name]e_flights_pdt

因此,持久化表的稳定数据库视图名称为:

tmp.LB_faa_e_flights_pdt

获得稳定的数据库视图名称后,您可以直接查询该视图。例如:


SELECT * from tmp.LB_faa_e_flights_pdt

注意事项

某些方言需要额外的语法

如果连接注册密钥以数字开头,则某些方言需要在稳定数据库视图名称的第二部分周围使用双引号、反引号、方括号或类似语法。例如,Amazon Redshift 需要使用双引号;因此,如果您的连接注册密钥以数字开头,则格式如下:

[scratch schema name]."[connection registration key]_[model_name]_[view_name]"

例如,如果连接注册密钥为 84,您需要在句点后将稳定表名称的第二部分用引号括起来。因此,您对数据库的查询将如下所示:


SELECT * from tmp."84_faa_e_flights_pdt"

如需了解所需的具体语法,请参阅方言的文档。

数据库连接必须具有 CREATE VIEW 权限

如需在数据库中创建视图,Looker 用于连接到数据库的账号必须对数据库的临时架构具有 CREATE VIEW 权限。

将 Looker 连接到数据库时,系统会配置数据库用户名、密码和临时架构。

您可以测试连接,以查看连接是否支持稳定视图名称。如果您的 方言支持稳定视图名称,并且连接中启用了 PDT,Looker 将测试连接,以查看其是否允许稳定视图:

  • 如果连接允许稳定视图,连接测试将返回如下结果:Can use stable views in temp schema "docsexamples_scratch" in database "flightstats"
  • 如果连接不允许稳定视图,连接测试将返回如下结果:Cannot use stable views in temp schema "docsexamples" in database "flightstats",并提供更多详细信息,例如 CREATE VIEW command denied to user 'docsexamples'

对稳定数据库视图的方言支持

创建持久化表稳定数据库视图的功能取决于 Looker 连接使用的数据库方言。在最新版本的 Looker 中,以下方言支持持久化表稳定数据库视图:

方言 是否支持?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica