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 部署至正式環境後,穩定資料庫檢視區塊會在下一個 Looker 重新產生器週期發布 (建立),並使用 publish_as_db_view: yes
  • 穩定資料庫檢視畫面僅支援使用資料群組或sql_trigger_value 持久策略的持續性資料表。系統不支援使用 persist_for 的持續性資料表。
  • 只有具備臨時結構定義 CREATE VIEW 權限的資料庫連線,才支援穩定資料庫檢視畫面。

定義

publish_as_db_view 參數可讓您標記持續性資料表 (包括持續性衍生資料表匯總資料表),以便在 Looker 以外查詢。如果永久資料表的 publish_as_db_view 設為 yes,Looker 會在資料庫中為永久資料表建立穩定的資料庫檢視區塊。穩定資料庫檢視畫面是在資料庫本身建立,因此可以在 Looker 外部查詢。穩定資料庫檢視區塊的概念與 LookML 檢視區塊不同,因為 LookML 檢視區塊位於 Looker 執行個體,而非資料庫本身。

在持續性資料表的 LookML 部署至正式環境後,Looker 再生器會在下一個週期發布 (建立) 穩定資料庫檢視區塊。publish_as_db_view: yes

範例

為 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 部署至正式版後,e_flights_pdt 的穩定資料庫檢視畫面會在下一個 Looker 重新產生器週期發布。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「管理」部分的「永久衍生資料表」頁面,取得永久資料表的穩定資料庫檢視名稱:

  1. 按一下 Looker「主選單」圖示 ,然後選取「管理」(如果「管理」選單尚未顯示)。(如果您位於 Looker 主選單的「探索」或「開發」部分,可能需要按一下返回箭頭,才能看到「管理」選單)。
  2. 在「管理」選單中,選取「永久衍生資料表」
  3. 在「永久衍生資料表」頁面中,搜尋永久資料表的名稱。
  4. 按一下持續性衍生資料表的三點選單,然後選取「PDT 詳細資料」
  5. 在「PDT Details」模式中,找出「Stable Name」欄位。

如要直接查詢穩定檢視表資料表,請在資料表名稱前加上暫存結構定義名稱。舉例來說,如果暫存結構定義名稱為 tmp,您可以使用類似下列的指令查詢穩定版資料庫檢視畫面:


SELECT * from tmp.CL_e_redlook_e_redlook_inc_pdt

「探索」的「SQL」分頁

如果無法存取「永久衍生資料表」管理頁面,可以透過「探索」的「SQL」分頁中包含的資訊,判斷永久資料表的穩定檢視區塊名稱。穩定版檢視區塊名稱的格式如下:

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

舉例來說,如果您有名為 faa 的模型中含有持續性資料表,以及名為 e_flights_pdt 的檢視區塊,您只需要暫存結構定義名稱和連線註冊金鑰。您可以在持續性資料表查詢的「資料」部分,找到「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+
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 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