ブログ

Tableauにおけるデータ接続

データ接続の基礎

Tableauにおいてデータ接続の方法を理解することは非常に重要です。
なぜならば、データ接続の設定により、ダッシュボードの表示速度が大きく変わることがあるからです。データサイズが多くなればなるほど、Tableauでの表示速度も落ちる傾向にあります。

この記事では、Tableauにおける基本的なデータ接続の方法とともに、表示の速度向上に向けて考えるべき点も合わせて紹介していきます。

データへの接続方法

データ接続画面では、「ファイルへ」「サーバーへ」という2つの選択肢を主に使うことになると思います。「ファイルへ」は文字通りエクセルファイルやCSVファイルなどの読み込みに当たります。

「サーバーへ」というのは、データベースへの接続です。一般的なコネクターであるJDBCやODBCもありますが、各データベースに最適化されたコネクターを使う方が接続速度が早くなる場合があります。

ライブもしくは抽出による接続

Tableauには「ライブ」「抽出」という2つのデータへの接続方法があります。

「ライブ」とは常にデータベースに接続することで、ビジュアルを作成する際に常に最新のデータに接続する方法です。
「抽出」とは、データを文字通り抽出した後に可視化や分析を行うものです。
言い換えると、「抽出」とは常にリアルタイムな変化を反映するものではなく抽出操作をした時点でのデータを利用するものになります。

ライブ接続を利用できる場合はどのような場合でしょうか。常にリアルタイムで数値を反映したダッシュボードを作成する必要がある場合、もしくはデータのサイズも大きくなくかつデータベースの処理速度が早い場合に利用します。
実際の分析の現場では、サーバーログや分析用中間テーブルに接続することがほとんどだと思います。データサイズが大きい場合には、ビジュアルの作成操作で読み込み時間が毎回発生してしまいますので、抽出によるデータ接続を行います。

また、ユニオンやピボット操作をした場合にも抽出によるデータ接続を行います。カスタムSQLを利用する場合にも、「抽出」によるデータ接続を行う方が早くなることが多いです。

事前に利用するデータを作っておく

データ接続の際には、前提となるデータ自体を作成しておくことも考えないといけません。
データの作成という点では、最も汎用性のある方法は、データベースに分析用のテーブルを作成しておくことです。分析用のテーブルとは、分析に利用するカラムを全て結合したテーブルのことです。
例えば、「購入履歴の統計情報を付与した顧客一覧テーブル」「顧客の購買履歴データ」など必要なデータの粒度に合わせてテーブルを用意しておきます。

また、Tableauにおいてデータ接続後に分析に利用しない列は、非表示にし抽出することで処理速度を向上させることができます。
Tableauで読み込むデータサイズをより小さくするという観点では、読み込み行数を少なくする方法があります。読み込みの行数を制限する方法としては、データのフィルタリングとロールアップ(集計)があります。
例えば、かなり大きな行数のログデータを必要な期間だけ分析したい場合などに利用します。分析の現場では、事前に分析用の中間テーブルを作成している場合が多いので、データ接続の際のフィルター機能やロールアップを利用する機会はそれほど多くはありません。

データ接続後の調整

データ型を調整する

Tableauにはデータベースと同じようにそれぞれの列に型が存在しています。Tableauには、主に数値、日付、文字列、ブール(真偽)の型があります。データを読み込んだ際に、Tableauが自動で型の判別を行いますが、より適切な型があれば手動で設定することも可能です。
データ型を調整することの目的は、データ型によって処理速度が異なるからです。具体的には、処理が早い順にブール>数値(整数>少数)>日付(日付>日付と時刻)>>文字列の順番になります。

計算フィールド

元のデータを読み込んだ後に、新たな列を計算により追加したい場合があると思います。そのような計算により新しく追加したフィールドを計算フィールドと呼びます。
計算フィールドの例は、1決済の金額ごとに決済金額分類を付与したい場合などがあります。接続データを効率よく使うようにすることが計算フィールドを上手く使うコツです。

最もポピュラーな例は、IFによる計算です。IF文は、IF THEN else ENDというルールで記載を行います。
複数の判定条件が存在するときには、IF文は、ELSEではなくELSEIFを利用していきます。IFとELSEを利用すると、条件分岐を作る際にIF文の入れ子状態の計算式を記述する必要があります。ELSEIFを利用すれば、最初のIFでFalseになった場合の条件をELSEIF という形式で記載します。これにより条件分岐の記載が楽になります。

関数の処理効率をあげる

TableauにはSUMやCOUNTをはじめとする集計のための様々な関数が用意されています。関数の中には処理が重いものと比較的軽いものがあります。データを接続する際のポイントとしては、計算が軽い関数を使える列を元データから読み込むということが重要です。

ここではよく使われる関数を取り上げて接続するべきデータ項目をどのように選ぶのかという点についても合わせて解説をしていきます。

初めに紹介する関数はCOUNTDです。この関数は与えられた列に存在する複数の種類の情報を重複なく何種類あるのかを数えるものです。
例えば、ECサイトのデータに購入者IDという列があった場合、このデータでのユニーク購入者数を算出したい場合には、COUNTD([購入者ID])という風に書きます。

COUNTD自体は、非常に便利なのですが、計算リソースを多く使うのでたくさんの計算表を作りたい場合には利用しない方がよいものです。
対応方法としては、上記のECサイトの購入トランザクションを想定した場合、購入者IDの初回決済に1がたつフラグを立てて、その列に対してSUM関数を使うという形でCOUNTDを使わずとも対応することができます。

文字列に関する処理も多くの計算リソースを利用します。特に、テキストを綺麗な形にクリーニングしたい場合には、FINDやREPLACE、MIDなどを入れ子状でたくさん利用しているケースもあります。
この場合、利用している関数ごとに毎回評価を行うので計算リソースを比較的要するものです。対応方法としては、文字列の対応は正規表現を利用することが挙げられます。

日時に関する処理も計算リソースを要するものです。Tableauしか利用しないユーザであれば、YEARやMONTHを組み合わせるよりも、DATEADDやDATETRUNCを利用することで、複数の関数を利用しないように対処することができます。クエリを書ける場合には、抽出の段階で、クエリで必要な日時計算を行っておいて事前に列として読み込みデータに付与してしまうことが最も効率がよいです。

まとめ

データの接続は、単にデータを読み込む設定を行うだけでなく、その後の処理の効率化を考えた上での、抽出方法や抽出列の設定を行う必要があります。

特に抽出列の設定は、データの特徴を踏まえた上で事前に必要な列をクエリやTableau Prep Builderで追加しておく処理が必要になります。
データ接続を行う際には、「この後どのような処理をしたいのか」を設計した上でデータ接続を行うとTableauのパフォーマンスを落とさずに利用することができるようになります。

CONTACT
お問い合わせ

ご相談やご依頼、病院マスタなどについてのお問い合わせはこちらのお問い合わせフォームから。

サービスなどについてのお問い合わせ 病院マスタについてのお問い合わせ

メールお問い合わせ