Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How We Reduced 99.6% Load Time of a Tableau Workbook with 112 Million String Calculations

2025年09月23日に「Dev.to」が公開したITニュース「How We Reduced 99.6% Load Time of a Tableau Workbook with 112 Million String Calculations」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Tableauダッシュボードのロード時間が8分から2秒未満へ、99.6%高速化された事例。膨大な文字列計算が原因だったが、計算をデータベースで事前処理し、結果をTableauのHyper Extractに保存した。複雑な計算はTableau外で行うことで、表示性能が大幅に向上した。

ITニュース解説

データ分析の世界では、情報を素早く、そして分かりやすく提示する「ダッシュボード」というツールが非常に重要だ。しかし、どんなに優れたダッシュボードも、表示されるまでに長い時間がかかれば、その価値は大きく損なわれる。特に、大量のデータを扱う際に行われる「文字列計算」は、数字の計算などと比べてコンピューターに大きな負荷をかけるため、パフォーマンスの問題を引き起こしやすい。今回の事例は、Tableauという人気のデータ分析ツールを使って、この文字列計算が原因で発生したダッシュボードの表示速度の問題を、どのように劇的に改善したかという話である。

クライアントが抱えていた課題は、2800万行に及ぶ映画レビューのデータだった。このデータから、映画のタイトルから公開年(例えば、「ショーシャンクの空に (1994)」から「1994」)を抽出することが求められていた。タイトルの中に複数の括弧が含まれるなど、複雑なパターンにも対応するため、Tableau内で四つの計算フィールドを作成する必要があった。しかし、これらの計算が「行レベルの計算」、つまりデータセットの2800万行それぞれに対して個別に実行される計算だったため、Tableauは合計で4 × 2800万 = 1億1200万回もの文字列計算を処理しなければならなかった。この膨大な計算が、ダッシュボードのパフォーマンスに即座に深刻な影響を及ぼした。結果として、簡単なグラフを表示するだけでも、なんと7.9分もの時間がかかったのだ。エンドユーザーにとって、これほどの待機時間はまったく許容できるものではなく、データ分析の妨げとなる摩擦を生み出していたため、根本から計算戦略を見直す必要があった。

最初の解決策は、Tableauが担っていた重い処理を、データの元となるデータベースに任せるというものだった。具体的には、映画の公開年をTableau内で計算する代わりに、MS SQL Serverというデータベース上で直接計算し、その結果を新しい列として保存するようにした。こうすることで、Tableauは計算済みのデータを受け取るだけで済むため、自身の処理負荷を大幅に軽減できた。この変更によって、ダッシュボードの読み込み時間は7.9分から1.44分へと短縮され、82%もの改善が見られた。しかし、まだリアルタイムの応答性には程遠く、さらなる最適化の余地があることは明らかだった。

次に導入されたのが、Tableauの「Hyper Extract(ハイパーエクストラクト)」という強力な機能だ。今回のプロジェクトではリアルタイムで常に最新のデータが必要なわけではなかったため、このHyper Extractを活用することにした。Hyper Extractとは、Tableauが分析しやすいように最適化されたデータ形式で、特定の時点のデータを丸ごと抽出してファイルとして保存する仕組みである。この中に、計算結果を事前に組み込んでおくことを「マテリアライズ(具現化)する」と呼ぶ。つまり、ユーザーがダッシュボードを操作するたびにTableauが計算し直すのではなく、抽出を作成する際に一度だけ計算を行い、その結果をファイルの中に保存しておくのだ。これにより、Tableauはクエリが実行されるたびに計算を再実行する手間が省け、保存された結果を瞬時に利用できるようになった。このHyper Extractの導入により、読み込み時間は元の7.9分からわずか4.65秒へと大幅に短縮され、実に99%の削減を達成した。

それでも、さらなる最適化を目指し、これまでの二つのアプローチを組み合わせることにした。つまり、映画の公開年の計算をまずデータソースであるMS SQL Serverで事前に行い、その最適化されたデータセットからHyper Extractを作成したのだ。この最終的な組み合わせにより、ダッシュボードの読み込み時間は驚くべきことに1.8秒にまで短縮された。これは元の7.9分と比較して99.6%ものパフォーマンス向上を意味する。この結果は、強力なSQL Serverのような外部データベースよりも、Tableauのクエリに対してはHyper Extractがさらに最適化されていることを明確に示した。

この一連の最適化の道のりから、いくつかの重要な教訓が得られた。まず、文字列計算は非常に負荷の高い処理であり、Tableau内で直接、行レベルで実行することはできる限り避けるべきである。次に、複雑な計算ロジックは、データベースのようなデータソース側で処理させる方が効率的である。データベースは大量のテキスト処理を効率的に行うように設計されているからだ。そして、TableauのHyper Extractはクエリのパフォーマンスを劇的に向上させるための非常に強力なツールである。最も良い結果は、データソースでの事前計算とHyper Extractでのマテリアライズという、複数の手法を組み合わせることで得られることが多い。何よりも重要なのは、ダッシュボードのパフォーマンスはユーザー体験に直結するということだ。ダッシュボードがユーザーの思考速度と同じくらい迅速に表示されなければ、その利用は促進されない。

具体的なベストプラクティスとしては、文字列計算をデータベースやETLツールなどのデータソース側で実行すること、Tableau Prepのようなツールを使ってTableauに取り込む前にデータを前処理すること、計算結果をHyper Extractにマテリアライズして保存すること、行レベルの文字列計算は必要最低限に抑えることなどが挙げられる。また、Tableauのパフォーマンスレコーダーを使って、どこに時間がかかっているのかを具体的に特定し、計算を簡素化することも有効だ。

これらの手法は、EC、医療、金融など、他の業界でも同様の課題解決に貢献している。例えば、あるEC企業では、Tableau内で製品カテゴリの階層を文字列解析していたため、ダッシュボードの読み込みに5分かかっていたが、データベースでの解析と抽出の利用に切り替えることで3秒に短縮された。医療機関の事例では、患者の診断コードから必要な情報をTableauの文字列計算で抽出していたため、6分かかっていたレポートが、データウェアハウスでの事前処理により5秒未満で表示されるようになった。

今回の事例は、最適化が段階的であり、それぞれのステップでパフォーマンスが向上し、最終的に複数の方法を組み合わせることで最大の効果が得られることを示した。特にTableau Hyper Extractは、ほとんどのライブ接続よりも高いパフォーマンスを発揮する非常に強力な機能である。そして、データベースでのフィールドの前処理とExtractの活用という組み合わせは、大規模なデータセットにおいて最も高速なセットアップを提供することがわかった。最終的に、ダッシュボードが高速になったことで、クライアントはこのツールを日常的に利用するようになり、利用頻度が向上した。

7.9分かかっていたダッシュボードが1.8秒で表示されるようになるという今回の事例は、適切な戦略を適用することでTableauダッシュボードのパフォーマンスが劇的に向上することを示している。文字列計算を賢く扱うこと、つまり、それらをデータソースに移動させたり、抽出にマテリアライズしたり、あるいはその両方を組み合わせたりすることが、遅くてストレスのたまるダッシュボードと、リアルタイムの意思決定を可能にするダッシュボードとの間の決定的な違いを生む。常にパフォーマンスを意識して設計し、適切な最適化戦略を実行することで、単なる時間短縮を超え、利用促進、意思決定の質の向上、真のビジネス価値へと繋がるのだ。

関連コンテンツ

関連IT用語

関連ITニュース