publish_as_db_view

사용

view: my_view {
  derived_table: {
    publish_as_db_view: yes
    ...
  }
}
계층 구조
publish_as_db_view

- 또는 -

publish_as_db_view
기본값
no

수락
부울(yes 또는 no)

특별 규칙
  • 영구 테이블의 LookML이 publish_as_db_view: yes프로덕션에 배포된 후 다음 Looker 재생기 주기에서 안정적인 데이터베이스 뷰가 게시 (생성)됩니다.
  • 안정적인 데이터베이스 뷰는 데이터 그룹 또는 sql_trigger_value 지속성 전략을 사용하는 영구 테이블에서만 지원됩니다. persist_for를 사용하는 지속 테이블은 지원되지 않습니다.
  • 안정적인 데이터베이스 뷰는 임시 스키마에 대한 CREATE VIEW 권한이 있는 데이터베이스 연결에만 지원됩니다.

정의

publish_as_db_view 파라미터를 사용하면 Looker 외부에서 쿼리할 수 있도록 영구 테이블 (영구 파생 테이블집계 테이블 모두 포함)에 플래그를 지정할 수 있습니다. publish_as_db_viewyes로 설정된 영구 테이블의 경우 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
  }
}

e_flights_pdt의 안정적인 데이터베이스 뷰는 PDT의 LookML이 프로덕션에 배포된 후 다음 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]
    }
  }
}

weekly_orders 집계 테이블의 안정적인 데이터베이스 뷰는 집계 테이블의 LookML이 프로덕션에 배포된 후 다음 Looker 재생기 주기에서 게시됩니다. Looker가 집계 테이블을 빌드하면 데이터베이스에서 안정적인 데이터베이스 뷰를 쿼리할 수 있습니다.

안정적인 데이터베이스 뷰 액세스

안정적인 데이터베이스 뷰가 영구 테이블에 게시되면 안정적인 이름을 가져온 후 직접 쿼리할 수 있습니다. 영구 테이블의 안정적인 뷰 이름을 가져오는 방법에는 두 가지가 있습니다.

PDT 세부정보 모달

관리자 또는 see_pdts 권한이 있는 사용자는 Looker의 관리 섹션에 있는 영구 파생 테이블 페이지를 사용하여 영구 테이블의 안정적인 데이터베이스 뷰 이름을 가져올 수 있습니다.

  1. Looker 기본 메뉴 아이콘 을 클릭하고 관리 메뉴가 아직 표시되지 않은 경우 관리를 선택합니다. (Looker 기본 메뉴탐색 또는 개발 섹션에 있는 경우 뒤로 화살표를 클릭해야 관리 메뉴가 표시될 수 있습니다.)
  2. 관리자 메뉴에서 영구 파생 테이블을 선택합니다.
  3. 영구 파생 테이블 페이지에서 영구 테이블의 이름을 검색합니다.
  4. 영구 테이블의 점 3개로 된 메뉴를 클릭한 다음 PDT 세부정보를 선택합니다.
  5. PDT 세부정보 모달에서 안정적인 이름 필드를 찾습니다.

안정적인 뷰 테이블을 직접 쿼리하려면 테이블 이름 앞에 스크래치 스키마 이름을 추가합니다. 예를 들어 스크래치 스키마 이름이 tmp인 경우 다음과 같은 명령어로 안정적인 데이터베이스 뷰를 쿼리할 수 있습니다.


SELECT * from tmp.CL_e_redlook_e_redlook_inc_pdt

Explore의 SQL 탭

영구 파생 테이블 관리 페이지에 액세스할 수 없는 경우 Explore의 SQL 탭에 포함된 정보를 사용하여 영구 테이블의 안정적인 뷰 이름을 확인할 수 있습니다. 안정적인 뷰 이름은 다음 형식을 사용합니다.

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

예를 들어 faa이라는 모델에 영구 테이블이 있고 e_flights_pdt이라는 뷰가 있는 경우 스크래치 스키마 이름과 연결 등록 키만 있으면 됩니다. 영구 테이블에 대한 쿼리의 데이터 섹션에 있는 SQL 탭에서 두 가지를 모두 확인할 수 있습니다. SQL 탭의 CREATE TABLE 또는 FROM 문에서 다음과 같이 정보를 확인할 수 있습니다.

  • 연결 등록 키는 두 글자이며, 데이터베이스 다이얼렉트에 따라 달러 기호 또는 지속된 테이블의 테이블 이름에 있는 첫 번째 밑줄 뒤에 옵니다.
  • 스크래치 스키마 이름은 CREATE TABLE 또는 FROM 뒤에 오는 문자열의 시작 부분으로, '.' 앞에 있습니다.

다음 예시 쿼리에서 연결 등록 키는 LB이고 스크래치 스키마 이름은 tmp입니다.

다음은 연결 등록 키 앞에 달러 기호를 사용하는 언어에 대한 CREATE TABLE 문이 포함된 Looker 생성 SQL 쿼리의 예입니다. 뷰 이름은 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

다음은 연결 등록 키 앞에 밑줄 기호를 사용하는 언어에 대한 FROM 문이 포함된 Looker 생성 SQL 쿼리의 예입니다. 뷰 이름은 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"와 같은 결과를 반환합니다.
  • 연결이 안정적인 뷰를 허용하지 않으면 연결 테스트에서 CREATE VIEW command denied to user 'docsexamples'과 같은 추가 세부정보와 함께 Cannot use stable views in temp schema "docsexamples" in database "flightstats"와 같은 결과를 반환합니다.

안정적인 데이터베이스 뷰를 위한 언어 지원

지속 테이블 안정적인 데이터베이스 뷰를 만들 수 있는지 여부는 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