用法
view: my_view {
derived_table: {
publish_as_db_view: yes
...
}
}
|
层次结构
publish_as_db_view- 或 - publish_as_db_view |
默认值
no
接受
布尔值(yes 或 no)
特殊规则
|
定义
借助 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 (永久性派生表)页面获取持久化表的稳定数据库视图名称:
- 点击 Looker 主菜单 图标 ,然后选择 Admin(管理),前提是 Admin(管理)菜单尚未显示。(如果您位于 Looker 主菜单 的 Explore (探索)或 Develop (开发)部分,可能需要点击后退箭头才能看到 Admin (管理)菜单。)
- 在 Admin (管理)菜单中,选择 Persistent Derived Tables (永久性派生表)。
- 在 Persistent Derived Tables (永久性派生表)页面上,搜索持久化表的名称。
- 点击持久化表对应的三点状菜单,然后选择 PDT Details (PDT 详细信息)。
- 在 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 TABLE 或 FROM 语句中,您可以找到如下信息:
- 连接注册密钥为两个字符;根据数据库方言的不同,它将位于美元符号或持久化表的表名称中的第一个下划线之后。
- 临时架构名称是
CREATE TABLE或FROM之后的字符串的开头,位于“.”之前
在以下所有示例查询中,连接注册密钥为 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 |