圧倒的に速い!Tableau抽出ファイル(.hyper)利用の仕方について解説
Tableauで容量の大きいデータを扱うときに、Viz作成やファイルを開き直す度にとても時間がかかることはないですか?
筆者はありました。。
今回は、大容量データを抽出接続することで圧倒的にパフォーマンスアップ(ここでは処理時間を短縮することを指します)する方法を教えます!
この記事の狙い
Tableauで扱いたいデータ容量が大きい かつ インタラクティブなグラフ描画には処理が遅すぎる場合に、Tableauでの処理速度を上げるひとつの選択肢として抽出接続を行うことができるようになる。(ついでにGoogle Big Queryからの抽出手順も説明します)
※Tableau公式のホワイトペーパーにもあるように、前提として状況に応じて抽出/ライブ接続の両方を活用する事が望ましく、抽出接続で必ず速度が上がると断言できるものではないです。この記事のメインではパフォーマンスアップの一つの選択肢として抽出接続の方法を説明しますが、末尾で2つの接続の使い分けについても少し触れようと思います。
はじめに
前提として、ローカルでTableauデータを開くとき、データの取得方法は以下があります。
ライブ接続:ローカルファイルやGoogle Big Queryなどの外部データへ都度接続しに行く
抽出接続:事前に抽出しておいた圧縮ファイル( .hyper/.tde(リンク))を開く
今回は1、2両方の手順を説明して抽出ファイルの便利さを語っていきたいと思います。
1.ライブ接続
今回は処理速度を比較したいので、ファイルではなくGoogle Big Query(BQ)から1000万行近いデータに接続する場合で考えてみましょう。初回データ取得時は、まずはこの方法でデータ取得します。
BQからのデータ抽出方法
1.新しいデータソースからGoogle Big Queryを選択

2.いずれかでサインインし、必要なデータに接続します。

※今回は、カスタムSQLで約1000万行抽出しました。
余談ですが、Tableauからクエリ実行するときはクエリ末尾に「; (セミコロン)」を付けるとエラーになるので気をつけてください。

すると、以下のような処理ダイアログが表示され、データ取得までに一定の時間がかかってしまいます。。(この時は5分程度)

クエリ実行からデータ取得が済んだ後、ワークシートでVizを作成しますが、項目を列に配置するひとつひとつの作業でも結構時間がかかります。(この作業でもクエリ実行しているからだそう)


毎回この時間はもったいないですよね。
それを回避するために、以下の手順で抽出ファイルを作成しましょう。
2.抽出接続
初回データ取得時に1の手順でデータをワークブックに取得しますが、このあとの作業を楽にするために、今から説明する手順でデータ抽出を行ってみてください。
データ抽出手順
1.抽出したいデータのメニューから「データの抽出」を選択
※今回は社内データのためデータ名はマスキングします




抽出が終わると、任意のローカルフォルダにhyperファイルができているはずです。

※場所がわからない場合は、データタブから当該データ右クリック>抽出>プロパティ で配置場所を確認できます。

以上で、データ抽出は完了です。
あとは、Tableauを新規で開き直して、抽出したhyperファイルを開いてください。


データ取得時も、ワークシート作成時も格段に速度が速くなっているはずです!
わたしの師匠曰く、
抽出しない場合は、外部データに作業の都度クエリ実行してデータ取得するのですが、抽出すると取得済みデータを参照するだけでよくなり、処理が速くなるとのことです。
1.2.の接続時の所要時間比較
計測の結果以下のようになりました。今回のケースでは抽出接続が速いようです。

ただし、抽出接続でワークブックを開いた後、再度ライブ接続をしてみると速度が上がっていたので、必ずしもライブ接続が顕著に遅いわけではなさそうです。
補足
記事の冒頭で、「状況に応じて抽出/ライブ接続の両方を活用する事が望ましい」旨のことを述べたのですが、それぞれに適したシチュエーションをざっとまとめてみます。
▼抽出接続が望ましいケース
接続先データベースの処理が遅く、インタラクティブな分析がしづらい場合
データへオフライン接続したい場合
データベース負荷を下げたい場合
▼ライブ接続が望ましいケース
接続先データベースの処理が速い場合
データ鮮度が重要視される場合
まとめ
ライブ接続と抽出接続をうまく使い分けて、快適なTableauライフを送ってみてください!
読んでいただきありがとうございました。