Snowflake & dbt Cloudハンズオン実践 #9: 『Snowsightダッシュボード可視化編』 #snowflakeDB #dbt

2024.02.01

アライアンス事業部 エンジニアグループ モダンデータスタック(MDS)チームの しんや です。

Snowflakeが展開しているサイト『Snowflake Quickstarts』では、Snowflake単体、またSnowflakeと他サービスとの連携について実戦形式で手を動かしながら学んでいけるコンテンツが多数公開されています。

その中の1つ『Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab(Snowflake と dbt Cloud ハンズオン ラボを使用してデータ チームを加速する)』は、dbt CloudとSnowflakeを連携させる形で、Snowflakeのデータを使ってdbt Cloudでデータ変換の処理を作り上げていく流れを学ぶことが出来る非常に参考になるコンテンツです。

当エントリ及び一連のエントリ群では、この一連の手順を実際に手を動かしながら進めた記録をまとめて行こうと思います。

第9弾「最終回)の当エントリでは『Snowsightダッシュボード可視化編』パートについて実践内容を紹介します。

一連の内容を1本にまとめようとするとめちゃくちゃボリュームが大きくなる内容でしたので、以下の形でそれぞれ分けて紹介していこうと思います。
#1: Snowflake環境準備編 [Snowflake QuickStarts: Step01-04]
#2: dbt Cloud IDE探索編 [Snowflake QuickStarts: Step05]
#3: dbt Cloud 基本構造紹介編 [Snowflake QuickStarts: Step06]
#4: dbt Cloud 実践編1(ソース設定&ステージングモデル作成) [Snowflake QuickStarts: Step07]
#5: dbt Cloud 実践編2(シード&マテリアライゼーション) [Snowflake QuickStarts: Step08]
#6: dbt Cloud 実践編3(マートモデルの作成) [Snowflake QuickStarts: Step09]
#7: dbt Cloud 実践編4(テスト&ドキュメント) [Snowflake QuickStarts: Step10]
#8: dbt Cloud 実践編5(デプロイ) [Snowflake QuickStarts: Step11]
#9: Snowsightダッシュボード可視化編 [Snowflake QuickStarts: Step12]

目次

 

Step12. Snowsightダッシュボードによるデータの可視化

開発環境での作業を経て全てのデータが本番環境で稼動しているところまで辿り着き、データを可視化する準備が整いました。

営業チームから、四半期ごとの全売上高を表示するダッシュボードを作成するように依頼されました。fct_ordersモデルを使って棒グラフを作成します。始める前に、ダッシュボード機能にアクセスできるように、Snowflake環境にログインし、Snowflake UIが使えるようにしておきます。

画面左側の「Dashboards(ダッシュボード)」をクリックし、右上隅にある青色の「+ Dashboard(ダッシュボード)」ボタンをクリックして新しいダッシュボードを作成します。ポップアップウィンドウでダッシュボードの名前を作成し、[Create Dashboard(ダッシュボードの作成)]をクリック。

ダッシュボードの名称入力を促されるので任意のタイトルを入力します。

画面右上のプルダウンから、ダッシュボード作成時に使う「ロール」と「ウェアハウス」の指定を行います。今回はロールにPC_DBT_ROLE、ウェアハウスにPC_DBT_WHを使っていましたのでそれらを選択しておきます。

次に、画面中央の[新しいタイル]→[SQLワークシートから]を選択。

新しいタイル画面で、画面上部中央のタイムスタンプをクリックし、タイル名を「四半期売上高」に更新します。

エディター上部の接続先指定箇所が、データベース:PC_DBT_DB、スキーマ:PRODUCTIONに設定されていることを確認してください。

エディタ上で以下のSQLを実行します。

select order_date
     , sum(net_item_sales_amount) as sum_net_sales
  from pc_dbt_db.production.fct_orders
 where order_date = :daterange
 group by :datebucket(order_date), order_date

ちなみこちらのSQL、中身に:daterange:datebucketという語句が含まれていますが、これは「クエリフィルタ」という機能になります。詳細は下記エントリをご参照ください。

上記クエリを有効に働かせる(条件となる日付データがクエリできる)ように、日付のクエリフィルタを「常時」に設定しておいてください。クエリを実行すると以下のような結果や統計情報が表示されます。

それでは、結果の表示方法を変えてみます。。画面中央の[チャート]ボタンをクリックすると、表示形式が以下のように変わりました。

このクエリはnet_item_sales_amountという値を集計し、order_dateでグループ化していますが、現時点では、非常に忙しい折れ線グラフにすべての日付が表示されています。なので以下の設定変更で見た目を変更します。

  • チャートの種類をクリックして、棒グラフに更新
  • order_dateをクリックし、バケッティングとして四半期を選択
  • 順序の方向を降順から昇順に変更

最終的な体裁は以下のようになりました。あとはこのタイルをダッシュボードに配置調整すれば完成です。

ということで当ハンズオンの手順はこれで一通りの完了となります。

 

まとめ

という訳で、Snowflake QuickStarts『Accelerating Data Teams with Snowflake and dbt Cloud Hands On Lab』実践第9弾、Snowsightダッシュボード可視化編に関する内容の紹介でした。

トータル9本を連ねる形となった今回のdbt&Snowflakeハンズオン実践、データをもとにモデルを組み上げていく、dbtならではの良さ、機能を生かした依存関係を考慮した連携を実際に体験しながら流れを学ぶことが出来てとても良いコンテンツだなと思いました。手順としては可能な限り省略せず、順を追って行けるような内容を目指しましたが、興味を持たれた方はぜひこのハンズオンを実践してみて頂ければと思います。