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

Tableau Desktopで超高速DWH『Snowflake』に接続してみた

執筆者 Jimmy 更新日時 2019年10月23日

Topics: コラム
Tableau Desktopで超高速DWH『Snowflake』に接続してみた

目次

Tableauユーザーの皆様、こんにちは。jimmyです。
僕自身も普段からTableauを愛用しているのですが、DBサーバーに接続して大量のデータ(1千万件以上)を分析しようとすると画面が固まっちゃったり、パフォーマンスが悪くなってしまうこと、よくありませんか?
それはもちろんTableau自体が大量データを得意としていないこととも関係があるのですが、DBサーバー側のパフォーマンスが高くないという問題とも関わりがあります。
とは言ってもDBサーバーのサイズを調整するのってかなり手間が掛かるし、「どうしよう…」と悩んでいたところ、『Snowflake』というDWH製品の勉強会に参加する機会があったので、Tableauと接続した様子をレポートします。

1.Snowflakeとは

Snowflake(スノーフレーク)は、クラウドベースで開発されたデータウェアハウスで、最大の特徴は『高性能なのに低価格』という部分だと個人的には思う。
RedshiftやBigQuery等と性能を比較したベンチマークテストの結果によると、価格性能比でSnowflakeが最も優れているらしい。

クラウド型DWH Snowflake(スノーフレーク)とは?

◯Fivetran社が実施したベンチマークテスト結果
https://fivetran.com/blog/warehouse-benchmark

また、サイジングに関しても非常にシンプルなアーキテクチャで、コンピュートリソースとストレージリソースが完全に分離しているため、パフォーマンス調整(スケールアップ、スケールアウト)も非常に簡単。しかも、システムを停止する必要がないので可用性も高い。

また、価格体系も非常にシンプル。
コンピュート(ウェアハウス)とストレージのそれぞれに対して、稼働した分にだけ課金されるモデルとなっている。
特に興味深かったのが、ウェアハウスの課金モデル。
ウェアハウスのサイズは8種類(X-Small、Small、Medium、Large、X-Large、2X-Large、3X-Large、4X-Large)用意されており、上位サイズにいくにつれて処理性能・時間単価がそれぞれ2倍ずつになっていく。

上記を表にするとこうだ。便宜上、X-Smallを基準値1としている。

ウェアハウスサイズ 処理性能 時間単価
X-Small 1 1
Small 2 2
Medium 4 4
Large 8 8
X-Large 16 16
2X-Large 32 32
3X-Large 64 64
4X-Large 128 128

この課金モデルだと、ウェアハウスサイズを大きくしても処理時間がその分短くなるので、1タスク当たりのコストは変わらないことが分かる。
例えば、X-Smallで128分掛かるタスクを4X-Largeで実行すると1分で終了するため、それぞれの時間単価を掛けた時のコストはどちらも128となる。

これをうまく利用すれば、大きいタスクが走る時間帯にサイズを上げ、逆にタスクが少ない時間帯はサイズを下げる等の運用ができるようになり、コストを抑えつつもハイパフォーマンスなDWH環境を常に提供することができるようになる。

そこで気になるのが、実際どのくらいの性能なのか。
Snowflakeのトライアルで確かめていく。

2.Snowflakeのトライアルを始める

Snowflakeのトライアルでは、1ヶ月で400ドル分のリソースを無料で利用することができる。
試しに1.2TBのデータをスキャンし240億件のデータが返ってくるクエリを実行したら、30ドル程度で収まったのでトライアルで使う分には充分な程のリソースだ。
ということで、トライアルの始め方を紹介する。

登録情報の入力

Snowflake にアクセスし、氏名、メールアドレス、会社名、国名(JapanでOK)を入力する。

snowflakeのトライアル申込画面

アカウント情報の入力

次にエディションを選択するのだが、基本的にEnterpriseでいいだろう。
クラウドプラットフォームに関しても各個人の好みで問題ない。ただ、Regionに関しては米国が一番安く使えるのでオススメ。
あとは、電話番号と2箇所にチェックを入れたら完了!

snowflakeのトライアル申込画面

アカウントのアクティベート

程なくしてSnowflake社からメールが届くので「CLICK TO ACTIVATE」ボタンを押下する。

snowflakeのトライアル申込完了画面

ユーザー情報の登録

ユーザー名とパスワードを入力する。

すると、トライアルが開始されwebコンソールが開く。これで準備は完了。

3.クエリを実行してみる

すぐにTableauから接続するのも勿体ないので、このwebコンソール上からいくつかクエリを実行してみよう。
Snowflakeのトライアル用の環境にはサンプルデータが用意されている。中には10TBを超えるテーブルもあるので、かなり大きなタスクも実行することができる。

 

snowflakeデータベース SNOWFLAKE_SAMPLE_DATAがサンプルデータ

 

さらに、サンプルのクエリも用意されているので、挙動を確かめるだけだったらこれだけで完結する。
サンプルのクエリは"Open Tutorials"を選択し、Tutorial1~3を開くことで利用することができる。

チュートリアルの場所説明

チュートリアルは3つ用意されている

今回はTutorial1を選択してみよう。
中身をざっと見てみると注文データをReturnflagとLinestatusの状態ごとにデータを集計するようだ。
早速、"All Queries"にチェックを入れ、[Run]でクエリを実行してみる。

チュートリアル1を実行してみる

すると画面下部の”Results”に4行の結果が返ってくる。
処理時間も表示されているのが確認できる(今回は296ms)。

チュートリアル1の実行結果

このように、Tutorialを利用すればサンプルクエリでSnowflakeの挙動を確認することができる。
また、全てのログは”History”タブに記録されている。
処理時間やスキャンしたデータ量、返したデータ件数などが確認できるので、パフォーマンスをテストする際にはこの画面を見ながらクエリを実行していくことになる。

ヒストリータブを開く

以上で大体webコンソールの使い方は理解できたと思うので、ここからはTableauでSnowflakeに接続してみる。

4.TableauでSnowflakeに接続する

ODBCドライバーを入手する

Tableau DesktopでSnowflakeに接続するのには、あらかじめ"Snowflake ODBC driver"を入手しておく必要がある。
このドライバーに関してもSnowflakeのwebコンソールから簡単に取得できる。

まず、webコンソール画面左上の"Help"をクリックし、"Download..."を選択する。
odbcドライバーの入手まで

するとDownloads画面が開くので、"ODBC Driver"タブに切り替え"Snowflake Repository"を選択する。
odbcドライバーの入手まで

ブラウザが新しく開くので自分の環境にあったドライバーをダウンロードする。基本的にlatestバージョンを取得しておけば問題ないだろう。
odbcドライバーの入手まで

ダウンロード後、インストールを行えば準備は完了。

Tableau Desktopで接続する

さあ、Tableau Desktopを開こう。
サーバーへの接続からSnowflakeを選択し、以下情報を入力する。

サーバー:<account等>.snowflakecomputing.com
ユーザー名:Snowflakeトライアル時に設定したアカウント名
パスワード:Snowflakeトライアル時に設定したパスワード

tableauからsnowflakeへ接続する

ちなみにサーバー情報はwebコンソールのURLを参照すれば分かる。
上記を入力してサインインできれば接続は完了だ。

データソース画面を開き、接続先を選択していく。
今回は以下の条件で設定を行った。

tableauからsnowflakeへの接続情報

次に接続するテーブルを選択する訳だが、先述した10TBのテーブルに繋いだとしても、Snowflakeから返ってきたデータがPCのメモリに収まらないので、手頃なデータを探してみる。

CATALOGのデータやWEBサイトのデータも興味深いが、”CUSTOMER”テーブルが1億レコード(4.5GB)なので丁度良さそうだ。さらに"CUSTOMER_ADDRESS"テーブル(5,000万レコード、935MB)もあるので、結合させてみよう。
"C_CUSTOMER_ID"行と"CA_ADRESS_ID"行でうまいこと結合できたので、これでいこうと思う。
JOIN!

左結合なのでデータ件数は1億件だ。
まずはこれでどのくらいのパフォーマンスを発揮できるのか、試してみる。

作ったのは非常にシンプルなチャート。州ごとの顧客数を棒グラフで表示させている。
まずは棒グラフで検証

このチャートを作る際に発行されたクエリの処理時間は”2.4秒”だった。(X-Largeのウェアハウスを使用している)

続いて以下のマップも作成してみた。C_BIRTH_COUNTRY列を使用している。
次に地図で検証

このチャートを作る際に発行されたクエリの処理時間は”3.4秒”だった。(X-Largeのウェアハウスを使用している)

上記で2パターンのクエリを処理させたが、1億件のデータに対しての応答速度としては中々早いのではないかと思う。今回はX-Largeのウェアハウスを使用しているが、更に高速なパフォーマンスを求めるならサイズアップすれば実現するだろう。

次に、X-Smallのウェアハウスに切り替えてパフォーマンスを見てみる。
(以下のSQLを実行すればウェアハウスを新規で作成できる。)

CREATE WAREHOUSE test_warehouse WITH
WAREHOUSE_SIZE = xsmall
INITIALLY_SUSPENDED = TRUE;

X-Smallのウェアハウスで上記2つのチャートを作成した時のクエリ処理速度は以下のようになった。
棒グラフ:7.6秒
マップ:8.2秒

上記結果から、X-SmallとX-Largeを比較すると単純計算で処理時間が1/16になる訳ではないが、処理性能的にはかなりの差があることが分かる。また、今回は比較的スモールなクエリでの比較だったが、より大きく複雑なクエリを処理させた際には16倍に近い処理性能の差が明らかにあるのかもしれない。

今回は以上の検証で終了とするが、機会があればTB級のデータに対してのパフォーマンスも検証して記事にしたいと思う。

以上、【Tableau Desktopで超高速DWH『Snowflake』に接続してみた】でした。

 

最後に

弊社では、Snowflakeのナレッジサイトを運営していますので、是非こちらもご利用ください。https://knowledge.insight-lab.co.jp/snowflake

また、Snowflakeをより詳しく知りたい方向けにオンライン紹介セミナーも開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただける内容となっておりますので、是非ご利用ください。
Snowflake紹介セミナー申し込みページ

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

INSIGHT LABではTableau紹介セミナーを定期開催しています。Tableauの製品紹介や他BI製品との比較だけでなく、デモンストレーションを通してTableauのシンプルな操作性やプレゼンテーション機能を体感いただけます。

詳細はこちら

Jimmy

執筆者 Jimmy

セールスマーケティング マネージャー 応用情報技術者、Tableau Desktop Qualified Associate、G検定、AUTOMATION ANYWHERE CERTIFIED ADVANCED RPA PROFESSIONAL保持 よさこい日本一メンバー

1 分で読むことができます。

ゼロからわかるBIツールTableau(タブロー)使い方 入門講座の目次

3 分で読むことができます。

【荒野行動】最強武器の強さランキング距離別TOP5

1 分で読むことができます。

【認定資格】Tableau Desktop Certified Associate合格のための勉強法

2 分で読むことができます。

Tableauを使ってデータに接続してみよう!

2 分で読むことができます。

Tableauを使ってデータを結合してみよう!

1 分で読むことができます。

セルフサービスBIツール「Tableau」とは?