사용
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이 프로덕션에 배포된 후 다음 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
}
}
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의 관리 섹션에 있는 영구 파생 테이블 페이지를 사용하여 영구 테이블의 안정적인 데이터베이스 뷰 이름을 가져올 수 있습니다.
- 관리 메뉴가 아직 표시되지 않은 경우 Looker 기본 메뉴 아이콘 을 클릭하고 관리를 선택합니다. (Looker 기본 메뉴의 Explore 또는 개발 섹션에 있는 경우 뒤로 화살표를 클릭해야 관리 메뉴가 표시될 수 있습니다.)
- 관리 메뉴에서 영구 파생 테이블 을 선택합니다.
- 영구 파생 테이블 페이지에서 영구 테이블의 이름을 검색합니다.
- 영구 테이블의 점 3개로 된 메뉴를 클릭한 후 PDT 세부정보 를 선택합니다.
- 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"와 같은 결과를 반환합니다. - 연결에서 안정적인 뷰를 허용하지 않는 경우 연결 테스트는
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 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 |