#looker「カスタマーストーリー」を支えるツール特集#ビジネス#Lookerさがら2021.02.15この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Lookerで複数のテーブルを結合・集計してPDTを生成することがあるかと思いますが、「作ったPDTをLooker以外でも参照できないのかな」と思ったことがある方はいるのではないでしょうか?そんな方の要望を満たす方法がありますので、本ブログでご紹介したいと思います。Table」とは何かを振り返ります。端的に言うと、「Looker上で定義したSQLまたはLookMLの内容に基づいて、接続先のDWH・DBに実テーブルを作成する」機能です。別粒度へのデータ変換を行いたいときには派生テーブルを使わないといけませんが、この派生テーブルを実テーブル化させたものがPDTとなります。詳しく知りたい方は、下記の公式Docやブログが参考になるかと思います。前述の通り、PDTは「接続先のDWH・DBに実テーブルを作成する」ため、普通のテーブルとして使用することが可能です。PDTは再生成するたびにテーブル名が変わってしまうという仕様のため、このままPDTを使用しようとすると再生成のたびに参照先のテーブル名の記述を変更しなくてはいけません。実例を示すと、以下の流れですね。PDTを作成したあと、「派生テーブルを再作成して実行する」を押してPDTを再作成すると、下図の赤枠内のPDTのテーブル名が変わっていることがわかるかと思います。PDTをLooker外でも安定して参照させるにはそこで、PDTのテーブル名が変わっても安定して参照できるようにするためにpublish_as_db_viewというパラメータが用意されています。このパラメータをyesにしていると、対象のPDTを参照するビューを接続先のDWH上に作成してくれます。それだけでなく、PDTの再生成が行われるたびにビューが参照するPDTのテーブル名を自動で書き換えてくれるため、ユーザーはそのビューを参照すればPDTのテーブル名が変わったことを気にせずにPDTを使用することができる、という機能を持っています。yesと記述するだけでOKです。実際にパラメータを適用すると、どうなるのかを確認してみましょう。下図はBigQueryの例ですが、PDTを格納しているデータセットと同じ所に、ビューが追加されます。*を行うクエリが登録されています。ここでPDTの再生成を行ったとき、ビューのクエリ内容が本当に書き換わっているのかを確認してみます。下図赤枠のように、ビューのクエリ内容が新しいPDTのテーブル名に書き換わっていることが確認できました。これで、Looker外からこのPDTを使用したい場合は、このビューを使用すればPDTのテーブル名に左右されず安定して参照できますね!注意点PDTを外部参照する際に便利なpublish_as_db_viewですが、2つ注意点があります。派生テーブルを永続化してPDTとするには、datagroupの適用、sql_trigger_valueの定義、persist_forの定義、という3種類の方法があるのですが、publish_as_db_viewは、persist_forだけで永続化されたPDTには対応していません公式Docにも、下記のように記載があります。supported.常用するテーブルならば、事前にDWH上で作成することが望ましい本ブログで紹介しておいて難ですが、常用するテーブルならば、事前にDWH上で作成しておくことがやはり理想的です。理由としては色々考えはあると思いますが、1つ挙げるならば「PDTは基本的にconnectionで設定した専用のスキーマ(データセット)に格納されるため、一般人が参照しづらい場所にある」ことが挙げられるかと思います。聞くと、「じゃあ、いつpublish_as_db_view使うの!」となりかねないですよね...なので、1つ実際のユースケースを考えてみました。ユーザーから「このExploreに使用しているデータを他のツールでも使いたいんだけど」と問合せを受けるpublish_as_db_viewをyesにしてユーザーに作られたビューを公開するユーザーから「このデータいいね!これからも使いたい!」と良い感想を頂いたら、使用しているDWHで適切なスキーマとテーブル名で、テーブル定義するこういった形で、「Lookerをきっかけとして他のツールでも使用されるデータが生まれる」というユースケースならば、publish_as_db_viewはお手軽に使用できますし、ちょうど良いのではないでしょうか。最後にいかがでしたでしょうか!PDTをより有効活用する上でも、便利な機能かと思います。使用できそうな機会があれば、お試しください。