Snowflake Knowledge - INSIGHT LAB

【Snowsight】クエリ使用状況を監視するダッシュボードの作成

作成者: uta|2021年12月23日
この記事はSnowflake Advent Calendar 2021の23日目の記事になります。
 

はじめに

みなさま、はじめまして。
2021年4月に入社いたしました、utaです。
初めてのSnowflake記事投稿で、拙い部分もあるかと思いますが、暖かい心で読んでくださると幸いです。
 
さて、今回はSQLクエリの使用状況をモニタリングするためのダッシュボードを作成してみたいと思います。
 
というのも、入社当時、手続き型と非手続き型の違いに悩まされながら、たくさんのクエリの実行とエラーを重ねてきました。そこで自分のクエリを振り返り、これからの学習につなげていければと思ったのが発端です。
 
Snowsightの紹介と併せて、ダッシュボード作成までの過程を紹介していきます!
 
 

Snowsightとは

Snowsightは、SQLワークシートに代わる新しいワークシートとして登場したプレビュー機能です。
BIツールを用意することなく、チャートによるデータの可視化やダッシュボード作成ができるので、簡単に素早く視覚的な分析が行えます。
 
画面右上の赤枠内にあるアイコンをクリックすると、Snowsightへのログインページが開きます。
 
Snowsightの詳しい使用方法は、Leon先輩がまとめてくださっているので、こちらを参考にダッシュボードを作成していきます。(大変参考になりました!)
 
 

監視用ダッシュボードの作成

今回、作成するダッシュボードには以下の6つのチャートと2つのフィルタを用意します。
 
  •     チャート1 : クエリ成功or失敗
  •     チャート2 : クエリ実行回数
  •     チャート3 : クエリ最長実行時間
  •     チャート4 : 消費したクレジット
  •     チャート5 : クエリタイプ別実行回数
  •     チャート6 :クエリエラーランキング(TOP10)

  •     フィルター1 : ユーザ名
    • Snowflakeユーザ名に登録されているユーザ名
  •     フィルター2 : クエリタイプ
    • 実行したクエリの種類(SELECT, INSERTなど)
上記に必要な情報の多くは「QUERY_HISTORY」ビューに存在します。

公式ドキュメントに記載されているカラム情報を参考に、必要なデータを取得するクエリを書いていきます。
 
 

1. カスタムフィルターの作成

はじめに、可視化するデータの条件を変更するためのフィルターを作成します。
 
カスタムフィルターは、チャートのクエリ(WHERE句やCASE式など)の値を、UI上で切り替えることが可能なキーワードを用意することができます。
 
ダッシュボード作成画面左上の赤枠をクリックすると、フィルタ一覧が表示されます。
 緑枠で囲まれているのが既存のフィルタで、その下にあるフィルタが今回作成したカスタムフィルターです。
 
フィルターの作成には、右上の +Filter をクリックします。
 
フィルター値は、Snowflakeのデータベースからクエリで取得する方法と、あらかじめリスト化して設定する2つの方法があり、今回は使いやすさを考え前者で行います。(ユーザが新しく追加されたときなどを想定)
 
クリックすると以下のようなダイアログが表示されます。
ここにフィルターの仕様を設定していきます。ここで設定する項目は下記のとおりです。
 
項目 説明
Display Name フィルターの表示名
SQL Keyword クエリで使用するキーワード
Role フィルター値の更新時に使用するロール名
Warehouse フィルター値の更新時に使用するウェアハウス名
Options via フィルター値をクエリかリストで指定
Value type 値のタイプを指定(TEXT:文字列, NUMBER:数値)
Multiple values can be selected フィルター値の複数選択を許可する
Include an "All" option フィルター値の全選択を許可する
 
次に、各フィルターの設定とクエリを準備します。
  • フィルター1 : ユーザ名
 
 

 

 
  • フィルター2 : クエリタイプ
 
 
設定が完了したら、右下の Save をクリックします。チャートのクエリにフィルターのキーワードが指定されると左上にフィルターが現れます。
 

2. チャートの作成

次にダッシュボード上に配置するチャートを作成します。
ダッシュボード・チャートの詳細な作成方法についても下記の記事がとても参考になります。

 

各チャートの設定値とクエリ
  • チャート1 : クエリの成功 or 失敗

 
 
  • チャート2 : クエリ実行回数
 
 
チャート3 : クエリ最長実行時間
 
 
  • チャート4 : 消費クレジット
 
 
  • チャート5 : クエリタイプ別実行回数

ここで、:query_typeをWHERE句でなくCASE式にしている理由は、チャートで表示する際にカスタムフィルタをかけたときに、未選択のものを「0」として表示させるためです。

 
 
  • チャート6 :クエリ エラーランキング(TOP10)
 
 
 

3. ダッシュボードの作成

最後に、作成したチャートを見やすい形で配置していきます。
他のBIツールと比べて、チャートの配置にやや制限があるように感じましたが、綺麗に整形してもらえるので開発者側としてはとても助かります。
 
 
この結果を見るとシステム側で実行されているクエリも含まれているように見受けられるので、
カスタムフィルタのクエリタイプを「SELECT」に設定します。
 
 
SELECTのみの使用状況に変更されました!
上位はサブクエリ関連のエラーが占めていて、「サブクエリの使用に難あり。」ということが分かります。(もっと勉強します!)
 
 

まとめ


以上が、Snowsightによるクエリ監視用ダッシュボードの作成になります。
自分の見たかったもの短時間で形になり、驚きを隠せません。

次年度の新入社員研修では、データ基盤を担当することになりそうなので、自分だけでなく後輩たちの実行したクエリを分析し、良いアドバイスができるようさらなる改良を重ねたいと思います!
 
Snowflakeには、QUERY_HISTORYビュー以外にも様々なデータが蓄積されているので、気になるデータがあればSnowsightでどんどん可視化していきましょう!