Tableau Serverのキャッシュ設定を理解する #tableau

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィス唯一のDI部メンバー、tamaです。

本エントリは、Tableau Server Qualified Associateの試験ガイド「評価するスキル」に関連する内容となります。

  • ※2018年4月にバージョン2018.1がリリースされましたが、2018年5月現在のTableau Server Qualified Associateはバージョン10.5が対象のため、バージョンで異なる仕様や挙動については、バージョン10.5を対象にしています。

本エントリの概要

今回は試験ガイドの「キャッシュ設定を理解する」についてです。今回は低ボリュームの小ネタ気味のエントリとなります。

Tableau Serverにおけるキャッシュ

Tableau Serverは、Webブラウザでワークブック(ダッシュボード、ビューなど)を見ることができます。ユーザーは、そのビューを操作(フィルタを変えるなど)すると、その時にクエリされて取得したデータがキャッシュされます。そのユーザーや他のユーザーは、そのビューを見る時、再度そのデータを取得しにいくのではなく、キャッシュされたデータで代用できそうだ、となった場合、キャッシュが使用されます。

キャッシュが使用される時、いちいちクエリを発行するまでもなく、データの表示が可能になるため、非常に早くビューを表示することは可能です。ただし、キャッシュはキャッシュなので、そのデータが頻繁に更新されているような場合、実データより古いデータが表示されてしまうことになります。

ビューの表示スピードを優先するか、最新のデータを表示するか、このバランスは、組織のデータ分析における要件に応じて決めていかないといけません。

3つのキャッシングオプション

Tableau Serverには、3つのキャッシュの設定があります。先程も述べたように、自組織の要件に合わせて、どれが一番ベストな設定か、考える必要があります。

Tableau Server Configurationの「Data Connections」タブで、全てのデータ接続に適用されるキャッシングを設定します。

Refresh less often(更新頻度を減らす)

キャッシュが利用可能な場合は、いつでもデータはキャッシュ・再利用されます。 基本的にキャッシュがよく使われるので、結果的にデータベースに送信されるクエリの数を最小限に抑えます。 使用しているデータが頻繁に更新されない場合は、このオプションがいいと思います。

このオプションの注意点は以下です。

  • キャッシュの保持は最大2時間
  • 発行されるクエリ自体が早い場合は、キャッシュされない
  • 発行されるクエリ(で取得できるデータ)が16MBを超える場合は、キャッシュされない

Balanced(バランス)

キャッシュを保持する時間を、任意の時間で指定できるオプションです。指定時間内にアクセスがあった場合はキャッシュが使用され、時間外だった場合は、再度データソースから新しいデータから取得されます。

Refresh More Often(更新頻度を増やす)

キャッシュを使用しません(キャッシュを保持しない)。常にデータソースからデータを取得しに行きます。ですので、常に最新のデータが表示されることになります。同時アクセスユーザーが多い場合は、このオプションは避けた方がよいです。(クエリ発行数が多くなり、パフォーマンスが著しく低下するおそれがある)

初期SQL

初期SQLとは

まず、そもそも初期SQLとは何でしょうか。これは、一部のデータソースに限り、最初にデータソースにアクセスする際(ワークブックの表示や、抽出の更新などのタイミング)に発行されるクエリです。

どういう時にこれを使用するのかというと、この初期SQLでは、Tableau Serverのユーザー名等をパラメーターとして渡すことができます。これを使用することで、データソース自体へのアクセスを、そのユーザーの権限内のみに絞ることが可能になります。Tableauにはユーザーフィルターという機能がありますが、それと似たようなことがデータソースへの接続時に利用できるということですね。

ちなみに、初期SQLに対応しているデータソースの場合、接続時に下記のような表示が出ます。ここで、初期SQLを設定することができます。

また、初期SQLは、カスタムSQLとは別物ですので、注意しましょう。

初期SQLの設定

本題ですが、キャッシュオプションの下に、初期SQLという設定があります。簡単に言うと、これにチェックをすると、初期SQLを無効にすることができます。

無効にする理由としては以下のようなことが挙げられます。

  • 一部のデータソース(Teradataなど)では、初期SQLを設定していると、利用費が高騰するおそれがある
  • セキュリティ上の理由で初期SQLを発行させたくない
  • パフォーマンスの理由で初期SQLを発行させたくない
    • 例えば、上述したように、ユーザー名をパラメータとして渡して、そのユーザー限定のデータ接続を設定している場合、キャッシュを別ユーザーと共有することができなくなり、キャッシュのヒット率が大幅に下がるため、パフォーマンスが低下する可能性があります。

おわりに

今回はTableau Serverのキャッシュ設定について見てきました。キャッシュ一つとっても、管理者にとっては、結構吟味しなければならない内容なのではないでしょうか、ぜひ、どういうデータ分析を進めていきたいのか…という要件と照らし合わせて、決めていただければと思います。

参考