[Looker21.20新機能]PDTの依存関係を可視化できる「PDT Dependency Visualizer」を試してみる #looker

2022.01.05

さがらです。

2021年12月に、Looker21.20がリリースされました。

このリリースノートのうち、PDT Dependency Visualizerについて試してみたので、本エントリでまとめてみます。

PDT Dependency Visualizerとは

LookerのPDT(Persistent Derived Table)は、Looker上で定義したSQLまたはLookMLの内容に基づいて、接続先のDWH・DBに実テーブルを作成する機能です。

このPDTの定義をする際、すでに定義済のPDTを参照することも可能となっています。つまりPDTを複数個に分けて依存関係をもたせた構成にすることが出来るのです。(公式Docでは”カスケード派生テーブル”と呼ばれています。ちなみに永続化しない普通の派生テーブルでも、依存関係をもたせたカスケード派生テーブルは使用可能です。)

しかし、これまでのLookerではあるPDTがどのPDTから構築されているのかを確認するためには、定義したLookMLを見るしかありませんでした。

そこで、今回のアップデートで登場した新機能PDT Dependency Visualizerの出番となります。この機能を使うことで、下図のようにPDT間の依存関係を可視化することができます。

試してみる

先程の概要説明でも図を載せて説明したのですが、より複雑な依存関係をもたせた場合、PDT Dependency Visualizerではどのように表示されるか試してみます。

記述したLookML

  • modelファイル
connection: "cm_sagara_bq"

include: "/views/test_pdt.view.lkml"

datagroup: default_datagroup {
  sql_trigger: SELECT EXTRACT(YEAR FROM CURRENT_DATE());;
  max_cache_age: "24 hour"
}

# 依存関係の末端に位置するPDTをexploreとして定義

explore: test_pdt_10 {}

explore: test_pdt_11 {}
  • viewファイル(例外的に、1つのviewファイルに複数のviewを定義しています)
view: test_pdt_1 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        "1" AS id
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_2 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_1.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_3 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_2.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_4 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_3.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_5 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        "1" AS id
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_6 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_5.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_7 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        "1" AS id
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_8 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        "1" AS id
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_9 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_8.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_10 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        ${test_pdt_4.SQL_TABLE_NAME}.id AS id
        FROM ${test_pdt_4.SQL_TABLE_NAME}
        INNER JOIN ${test_pdt_6.SQL_TABLE_NAME} using(id)
        INNER JOIN ${test_pdt_7.SQL_TABLE_NAME} using(id)
        INNER JOIN ${test_pdt_9.SQL_TABLE_NAME} using(id)
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}

view: test_pdt_11 {
  derived_table: {
    datagroup_trigger: default_datagroup
    sql: SELECT
        id
        FROM ${test_pdt_1.SQL_TABLE_NAME}
      ;;
  }
  dimension: id {
    type: string
    sql: ${TABLE}.id ;;
  }
}
  • 依存関係(PowerPointで作成)

PDT Dependency Visualizerを使って依存関係を見る方法

それでは実際にPDT Dependency Visualizerを使って依存関係を見る方法を以下に記します。

「管理」➟「永続的な派生テーブル」➟対象のPDTの一番右の「・・・」➟「PDTの詳細」の順番に押します。

ポップアップで表示された画面の中で「依存関係の図を表示」を推します。これで依存関係を可視化できます。

依存関係となるPDTが多い場合

前述の手順でtest_pdt_1についての依存関係を可視化してみた図が下図です。依存関係が多い場合、このようにポップアップ内でスクロールが発生してしまうようですね。この図の枠組みの拡大縮小もできないようです。

また、可視化された図内のPDT名をクリックできないため、定義されているLookMLのコードへリンクすることはできないようです。この図を見る時の状況として、依存関係を見てエラーが発生しているPDTと関連するPDTを見て必要に応じてPDTの定義を修正する、という時が多いと思いますので対象のPDTのコードへリンクする機能は個人的にはぜひ欲しい機能ですね。

しかし多少スクロールが発生するとはいえ、これまでPDTの依存関係はLookMLのコードを見ることでしか確認できなかったことを考慮すると、やはり依存関係を図で見る事ができるというのは大きいと思います。実際、今回私が試したように11個のPDTの依存関係を可視化するというケースはそんなに多くないと思いますし…

エラーが発生した場合・一部のviewでPDTを使用しない場合

参考までにPDTの構築に失敗している場合や、一部のviewでPDTを使用しない場合はどのように表示されるのかも確認してみました。

エラーが発生した場合

エラーが発生している場合、赤色で表示されるようです。また、エラーが発生しているPDTの子は、生成処理が回らなかったとみなされ灰色になるようです。

一部のviewでPDTを使用しない場合

また、すべての派生テーブルをPDTで構成するのではなく、一部は通常の派生テーブルを用いた場合どのように表示されるかも確認してみました。

test_pdt_3を通常の派生テーブルにしてみた場合、下図のように白色で表示されるようです。

依存関係の色分けのまとめ

  • 緑:対象のPDTが問題なく作成された
  • 赤:対象のPDTがエラーにより作成できなかった
  • 灰色:対象のPDTの親に位置するPDTにエラーが発生し、生成処理が回らなかった
  • 白:PDTではない、通常の派生テーブルであることを示す

最後に

PDT Dependency Visualizerを試してみました。惜しい点はあるものの、PDTの依存関係を可視化できることはとてもありがたいので、今後のアップデートに期待ですね!

また、製品についてのアイデアがありますか?からリクエストを出しておこう…と思ったのですが、すでにリクエストが出ていました!(PDT名クリック時の対象のLookMLコードへのリンク機能についても、DISUCUSSIONに私がコメントしておきました。笑)

「依存関係をより大きく見たい」「PDT名クリック時に対象のLookMLコードへリンクしてほしい」と感じた方はぜひThumbs upボタンを押してください!