お問い合わせ
7 分で読むことができます

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

執筆者 uta 更新日時 2021年12月23日

目次

この記事はSnowflake Advent Calendar 2021の23日目の記事になります。
 

はじめに

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

Snowsightとは

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

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

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

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

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

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

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

 

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

2. チャートの作成

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

 

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

chart1_masking

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

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

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

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

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

まとめ


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

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

Snowflakeを体験してみませんか?

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

詳細はこちら

uta

執筆者 uta

野良猫を見かけると追わずにはいられません。

4 分で読むことができます。
Snowflakeの料金体系|クレジットと費用最適化のポイントをご紹介
5 分で読むことができます。
【禁断の比較?】SnowflakeとTreasure Dataを比べてみました
1 分で読むことができます。
誤ってupdateしてしまったレコードをtime travelで復元する
5 分で読むことができます。
【Snowflake】新機能「Streamlit in Snowflake」とは何者か!?
3 分で読むことができます。
AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた