Lookerで走っているクエリの確認方法について
Lookerでうまくいかないときの対処法
3週連続でLookerネタです。
今日はLookerでうまくいかないことがあったときにどのように対応しているかについてまとめていきます。
ここでいううまくいかないとは、下記のような状態を指します
-
エラーが出てしまい、結果が表示されない
-
エラーは出ないが、本来の結果と異なる
いずれのパターンでも、データの民主化ということを考えた際にはかなり致命的な状況と言えると思います。
特に後者の「エラーは出ないが、本来の結果と異なる」は、Lookerの強みであるガバナンスの効かせやすさを逆効果にしてしまいますので避けたい状況と言えるでしょう。
本記事では、そのような状況を回避するために、Lookerから各種DBで実際に走っているクエリの確認方法についてまとめます。
Exploreでの基本的なクエリ確認方法
Lookerをお使いの皆さんであれば当たり前のように使っているかとは思いますが、LookerはExploreにおいて走っているSQLクエリを簡単に確認出来るようになっています。
例えば、会員IDごとの購買データ数を調べる場合は下記のような形で出せますが
SQLボタンを押せば、実際に走っているクエリが確認出来る、というわけです。
なので、何かデータに違和感があったらまずはこの「SQL」タブを確認することになります。
ちなみに言うと…当然SQLは機械的に生成されるわけですが、その可読性を考えると いかにLookMLを簡素にするか… も保守性の観点では重要だったりします。
サジェスト等のクエリの確認方法
というのはまあ、Lookerを管理している方なら普通にやれていることかとは思うのですが、
実は今回このような記事を書くに至ったのは、前回「LookerのExploreでUNNESTしてJOINしたら候補が表示されない時の処方箋」という記事を書いたのですが、 このような原因にどうやって気付くのか? という質問をいただいたからです。
そう、サジェスト等の場合はどのようなクエリが走っているかをExploreの画面から確認出来ません。
そこで、どのように原因調査を行っているかというと、 管理画面内の「データベース > クエリ」のページを見ます。
たとえばサジェストであれば、 Sourceが Filter Suggestion
になっているものを探し、その Details
を開くと…
このように、発行されたSQLが確認出来ます!
例えばこの例だと、実際にUNNESTした上でサジェストを出しているので問題無くサジェストが出るようになったのだとわかるわけですね。
ちなみに、前回の記事「LookerのExploreでUNNESTしてJOINしたら候補が表示されない時の処方箋」の続きになりますが、 full_suggestions: no
の場合は同じクエリがこのようになります
purchases__item_ids
というテーブルは存在しない( UNNEST
して JOIN
するタイミングで作っている)のでエラーになってサジェストがちゃんと出てなかった、というのがよくわかります。
先ほどの管理画面の表示でもちゃんとエラーになります!
是非あわせて前回の記事も読んでみて下さい。
このクエリ一覧の画面は どのようなクエリが誰の手で走っているのかをスケジュールされたものも含めて明確にする上で非常に重要な画面 なので、ぜひ少なくともその存在を知っておきたいですね。
まとめ
今回はLookerから走っているクエリの確認方法についてまとめてみました。
その存在は知っていたけどあまり使えていなかった、とか、そもそも存在をしらなかった、もっと早く知っていれば…といった方々のお役に立てていれば幸いです。
Look MLのオプションを追加したとして問題が解決した、という局面でも、ただそれで喜ぶだけでなく、 どういった仕組みでそのオプションが機能しているのか等を掘り下げて理解しておくことは必ず役に立つはず で、そのためにも使える画面となっていると思いますので、Looker使いの皆様はぜひご活用ください。(もうしてる人も多いかもしれませんが)