用途
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
}
}
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 で集約テーブルが作成されたら、データベースで安定したデータベース ビューをクエリできます。
安定版データベース ビューへのアクセス
永続テーブルに対して安定したデータベース ビューが公開されると、安定した名前を取得した後に直接クエリを実行できます。永続テーブルの安定したビュー名を取得するには、次の 2 つの方法があります。
PDT 詳細モーダル
管理者または see_pdts 権限を持つユーザーは、Looker の [管理者] セクションの [永続的な派生テーブル] ページを使用して、永続テーブルの安定したデータベース ビュー名を取得できます。
- Looker のメインメニュー アイコン をクリックし、[管理] メニューがまだ表示されていない場合は [管理] を選択します。(Looker のメインメニューの [Explore] セクションまたは [Develop] セクションにいる場合は、[管理者] メニューを表示するために戻る矢印をクリックする必要がある場合があります)。
- [Admin] メニューから [Persistent Derived Tables] を選択します。
- [永続的な派生テーブル] ページで、永続テーブルの名前を検索します。
- 永続テーブルのその他メニューをクリックし、[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 ステートメントで、次のように情報を確認できます。
- 接続登録キーは 2 文字です。データベース言語に応じて、ドル記号または永続テーブルのテーブル名の最初のアンダースコアの後に続きます。
- スクラッチ スキーマ名は、
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
注意点
一部の言語では追加の構文が必要
接続登録キーが数字で始まる場合、一部の言語では、安定したデータベース ビュー名の 2 番目の部分を二重引用符、バッククォート、角かっこなどで囲む必要があります。たとえば、Amazon Redshift では二重引用符が必要です。接続登録キーが数字で始まる場合は、次の形式になります。
[scratch schema name]."[connection registration key]_[model_name]_[view_name]"
たとえば、接続登録キーが 84 の場合、安定したテーブル名の 2 番目の部分(ピリオドの後)を引用符で囲みます。データベースに対するクエリは次のようになります。
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 |