※ 本投稿は Looker Advent Caledar 2022 初日の記事となります!
みなさん年末の大掃除はお済みでしょうか。まだ在宅勤務中心の方も多いかもしれませんが、一般に脳は秩序を好むため、物が多く散らかった環境だと集中力が落ちる等の悪影響があるということが研究結果でも示されているそうです。
Looker も同じです。Looker を長らく使っていただいていると、もう久しく見ていないダッシュボードや Explore、あるいはディメンションやメジャーが大量にあったりしませんでしょうか。あるいは LookML のコードが肥大化してよく分からない JOIN が蔓延していませんでしょうか。そういった状況はアナリストの分析作業に悪影響があるだけでなく、システム的にも余計な負荷がかかって思わぬパフォーマンストラブルを引き起こしてしまう可能性があります。
Looker にはそういった不要なコンテンツやフィールド・join を特定したり、パフォーマンス問題に繋がる箇所を見つけたりするための仕組みがいくつかありますので以下で紹介する方法を試して自身の Looker インスタンスをすっきり保つようにしましょう。
管理 > コンテンツアクティビティ からご利用いただける Content Activity ダッシュボードを使うと、お使いの Looker インスタンスに作成されている各種コンテンツ (ダッシュボードや Explore) の利用状況を確認することができます。
直近30日以内に参照されていない各種コンテンツ (ダッシュボード、Look、ボード) がリストされます。Content Title から直接該当のコンテンツを開くこともできるので、確認して不要と見なせるものは削除してしまいましょう。[ここから探索] でフィルタ条件を変更し、例えば1年以上アクセスがないようなものは削除してしまうような運用にしても良いでしょう。
直近30日以内にクエリが実行されていない Explore がリストされます。これも同様に [ここから探索] で条件を調整し、不要と見なせるものは断捨離しましょう。まずは LookML コード内で hidden にし、特にユーザーから指摘がなければ消してしまうといった運用にすると安心でしょう。使われない理由がユーザー体験の悪さにあるのであれば、こちらのベストプラクティスを参考に Explore の改善も検討しましょう。
管理 > インスタンスパフォーマンス からご利用いただける Instance Performance ダッシュボードを使うと、Looker インスタンスに負荷をかける可能性のある各種情報を確認することができます。
ダッシュボードに設置できるタイルの数にハードリミットはありませんが、パフォーマンスの観点から 1 ダッシュボードあたり最大 25 タイルを目安にすべきです。それ以上のタイル数を含むダッシュボードが何度も実行されると Looker インスタンスに負荷が掛かり、場合によってはメモリ不足で動作が重くなり他のユーザーにも影響を及ぼします。
また大量のタイルを含むダッシュボードは一般に可読性が悪く、本来ユーザーに読み取って欲しい情報を読み取ってもらえない可能性が高まります。1つのダッシュボードにタイルを詰め込むのではなく、意味のあるまとまり毎にダッシュボードを分割し、ダッシュボード Link 等を活用してシームレスにダッシュボード間を移動できるようにしましょう。
管理 > パフォーマンスに関する推奨事項 からご利用いただける Performance Recommendations ダッシュボードを使うと、性能問題を引き起こす可能性のあるダッシュボードや Explore について警告および改善のための推奨事項 (例えばマージリザルトを減らす、テーブル計算をシンプルなものにするなど) が表示されます。こちらに従って余計な処理を減らすように改善しましょう。
Open Source で提供されているコマンドラインツールである Henry を利用すると、LookML で定義された model の中から利用されていない explore 定義や join、フィールドを特定することが可能になります。使われていない join やフィールドについては積極的に削除あるいは hidden にして見た目をスッキリ& Validation の短縮化を図りましょう。
Explore > System Activity > Query Performance Metrics のエクスプローラを使うと、Looker から発行されているクエリのパフォーマンスに関する情報を取得することができます。クイックスタートでいくつかの分析テンプレートも用意されており、例えば “Long Running Queries By Explore” を選択すると、クエリに長時間かかっている Explore について確認することが可能です。あまりに長時間掛かっている場合はこちらを参考にクエリのライフサイクルの中でどこがボトルネックになっているのかを確認し、パフォーマンスの改善を図ると良いでしょう。
いかがでしたでしょうか。定期的に不要コンテンツや不要コードの断捨離を行って Looker インスタンスをスッキリ保ち、分析業務が捗るようにしていきましょう。