Tableau 9.0 プレビュー: クエリパフォーマンスの向上

Tableau 9.0 では、より速く答えを得られるように、より深く掘り下げて質問ができるように、製品全体でのパフォーマンス向上に全力を尽くしました。 パラレルクエリからクエリ統合までの多彩な機能や、データエンジンの向上により、ユーザーはクリエイティブなデータ分析により集中し、より良い発見につなげることができるようになります。

クエリの実行やページのロードで時間をかけず、速いペースでデータに問いかけを行うことができれば、流れを止めずに分析を続けることができます。 そうなれば、思考を中断されることなく、クリエイティブなデータ分析に集中し、データから重要な発見をすることができるようになります。 Tableau 9.0 の開発において、より速く答えを得られるように、より深く掘り下げて質問ができるように、製品全体でのパフォーマンス向上に全力を尽くしたのは、まさにそのためです。

Tableau 9.0 で行った多くの改良のうち、いくつか例を使ってご紹介します。 それぞれの例では、パフォーマンスがどのように向上したかを示しています。使用したのは、4コア CPU の標準的なノート PC です。 もちろん、データ量、クエリの種類、使用している参照元データベースによって効果の出方は異なります。 以下に挙げるのはあくまでも例であり、どのデータセットでもこのようなパフォーマンス向上が期待できるわけではありません。

データエンジンの向上
Tableau はこれまでも、画期的なパフォーマンス向上を実現してきました。なかでも顕著だったのは、Tableau 6.0 で初めて導入された Tableau のデータエンジンです。 データエンジンは、さらに高速なクエリを実現するために設計されたインメモリ分析データベースです。

Tableau 9.0 におけるデータエンジンの向上では、高速だった分析データエンジンがさらに高速になったほか、基礎となるハードウェアの性能を最大限に引き出すための機能も導入されました。 この例では、1億 7,300 万行のデータに対してパフォーマンスが 10 倍になっています。

例: タクシーで支払われたチップの四半期ごとの平均額



これは、2013 年のタクシー支払いデータ1億 7,300 万行を含む Tableau データ抽出 (TDE) ファイルから作成したビジュアライゼーションです。 このビューに対してクエリを実行し、チップの平均額を四半期ごとに抽出すると、年末に近づくほどチップの額が増えていることがわかります。

結果: 10 倍の向上



Tableau 8.3 で、このワークシートを開くと、クエリの実行に7秒かかります。データセットの大きさを考慮すれば十分に高速であることがわかります。 同じワークシートを Tableau 9.0 で開くと、まったく同じクエリが1秒未満で実行されます。 間違いではありません。1秒未満です。 Tableau のデータエンジンが向上したおかげで、速度が 10 倍も向上したのです。 Tableau のデータエンジンにより、データ分析がよりシームレスに行えるようになり、ユーザーの操作性はさらに向上します。

パラレルクエリ
Tableau 9.0 では、参照するデータベースの能力をさらに有効に利用して、同時に複数のクエリを実行できるようになります。 この新機能「パラレルクエリ」により、Tableau Desktop と Tableau Server の両方でダッシュボードのパフォーマンスが向上します。 次の例では、1億 5,700 万行のデータに対してパフォーマンスが9倍になっています。

例: フライトのダッシュボード



このダッシュボードでは、1998 年から 2013 年のフライトデータを航空会社ごとに示しています。Tableau データ抽出ファイルに格納されている1億 5,700 万行のデータを使用しています。 このダッシュボードをロードすると、上位3社の航空会社のフライト数とその時系列変化、各航空会社のフライトを州ごとに見た比率など、多くのクエリが実行されます。

結果: 9倍の向上



Tableau 9.0 では各クエリが高速になっただけでなく、それぞれのクエリが同時に並行して実行されます。 結果的に、パフォーマンス全体が大幅に向上しました。 Tableau 8.3 では、このダッシュボードの総計ロード時間 (最初のクエリの開始から最後のクエリの終了まで) は 9.5 秒でした。 Tableau 9.0 では、各クエリの時間が短縮され、個々のクエリが並行して実行されるため、ロード時間は1秒を少し超えたくらいです。 ダッシュボードクエリのロードではパフォーマンスが9倍向上したということです。

クエリ統合
クエリを高速にする以上に速度を上げるにはどうすればよいでしょうか。 実行するクエリを少なくすることです。 Tableau 9.0 には、データベース接続に新しいテクノロジー「クエリ統合」が導入されました。これは、ダッシュボードのクエリをすべて参照し、クエリを単純化して数を減らす方法を見つける機能です。 クエリ数が少なくなればデータベースの負荷は小さくなり、ユーザーに対してもレスポンスが速くになります。 次の例では、Amazon Redshift データベースに対してパフォーマンスが2倍になっています。

例: 時間で見たタクシーデータ



このビジュアライゼーションは、最初の例と同じ、タクシーに関する1億 7,300 万行のデータセットを使っていますが、今回は Amazon Redshift に格納されている点が異なります。 時間ごとに測定した乗客数の合計と、チップの平均額を表した2枚のワークシートを組み合わせたダッシュボードです。午前4時から5時の間で興味深い傾向が現れています。この2枚のワークシートでは、同じ詳細レベルで分析が行われているので、複数のクエリを1つに統合できる可能性があります。

結果: 2倍の向上



クエリ統合機能が、2つのクエリの詳細レベルが同じであることを認識し、単純に一方の集計を他方の集計と同時に取得します。 このグラフを見ると、Tableau 8.3 で2回のクエリが必要だったものが、Tableau 9.0 では1回で済んでいることがわかります。 この機能によって、集計クエリの実行時間は 3.7 秒から 1.7 秒に短縮され、約2倍向上したことになります。

外部クエリキャッシュ 分析を開始するときに、クエリを実行する必要がなく、クエリ実行処理そのものをステップアウトする場合があります。 ワークブックを初めてロードすると、Tableau はデータソースに対してクエリを実行して値を取得し、ビジュアライゼーションを作成します。 では、2回目にはどうなるでしょうか。 抽出ベースのワークブックのように、データが変更されていなければ、データソースに対するクエリは必要ありません。

Tableau 9.0 では、Tableau Desktop と Tableau Server の両方で、クエリキャッシュをワークブックの一部として保存します。これにより、クエリキャッシュが保存されたワークブックは、ほぼ瞬時でロードできるようになります。 結果はもうそこにあるのですから、わざわざクエリを再実行する必要はありません。ユーザーは、キャッシュを更新するだけでよくなります。

ローカルあるいは Tableau Server で開いたことがあるワークブックをもう一度開くと、ほぼ一瞬でロードされます。 Tableau 9.0 が最大のクエリパフォーマンスを発揮するのは、まったくクエリを実行しなくていい場合かもしれません。 次の例では、1億 5,700 万行のデータに対してパフォーマンスが 50 倍になっています。

例: フライトのダッシュボード



クエリキャッシュ機能を実演するために、この例ではパラレルクエリ機能を紹介した2番目の例と同じダッシュボードを使っています。 1億 5,700 万行のフライトデータの入ったTableau データ抽出ファイルを使っています。 先ほどの例と異なるのは、ダッシュボードを開くのが2回目であるという点です。

結果: 50 倍の向上



Tableau 9.0 で追加された「外部クエリキャッシュ」機能により、このダッシュボードを前回開いたときのクエリ結果が保存されていました。 そのおかげで、キャッシュを取得する目的で短いクエリを1回実行しただけで終了しました。 1度開いたワークブックを再度開く場合、 Tableau 8.3 ではパフォーマンスは最初に開いたときと同じですが (約 10 秒)、Tableau 9.0 では 0.2 秒に短縮されます。 これは最初に開いたとき (1.1 秒) の5倍高速ですが、Tableau 8.3 で再度開くときと比べれば、実に 50 倍の向上ということになります。

以上は、パフォーマンス向上のためにTableau 9.0 に追加される新機能のうち、一部にすぎません。 これらの機能が相互に連携して、比類ないパフォーマンスを実現します。 抽出でのクエリ実行速度が向上し、クエリを並行して実行することで読み込み速度も向上しました。実行されるクエリの数も減り、場合によってはビュー内のすべてのクエリをキャッシュで代用できます。 Tableau 9.0 はさらに高速になり、パイプラインの処理量が増えるので、データの分析にさらに専念できるでしょう。

詳細な情報
このほかの Tableau 9.0 ブログシリーズも、ぜひお読みください。