Tableau での詳細レベル表現のしくみ
この記事では Tableau でどのように詳細レベル表現が計算され、機能するかを説明します。LOD 表現の詳細とそのしくみについては、Tableau Web サイトのホワイトペーパー「詳細レベル (LOD) 表現について」(新しいウィンドウでリンクが開く)を参照してください。
行レベルの式とビュー レベルの式
Tableau では、非集計データ ソースの列を参照する式は参照元となる表の行ごとに計算されます。この場合、式の次元は、行レベルです。行レベルの式の例は次のとおりです。
[Sales] / [Profit]
この計算は、データベースの各行で評価されます。各行について、その行の [売上] の値がその行の [収益] 値で除算され、乗算の結果 (利益率) を含む新しい列が生成されます。
この定義を使用して計算を作成する場合、[ProfitRatio] という名前で保存し、それを [データ] ペインからシェルフまでドラッグします。通常は、Tableau がビューの計算フィールドを集計します。
SUM([ProfitRatio])
これとは対照的に、集計されたデータ ソースの列を参照する式は、ビュー内でディメンションにより定義された次元で計算されます。この場合、式の次元は、ビュー レベルです。ビューレベルの式の例は次のとおりです。
SUM(Sales) / SUM(Profit)
この計算をシェルフまでドラッグすると (またはアドホック計算としてシェルフに直接入力すると)、AGG 関数で囲まれます。
AGG(SUM(Sales) / SUM(Profit))
これが集計計算と呼ばれるものです。詳細については、Tableau 内の集計関数(新しいウィンドウでリンクが開く)を参照してください。
次の図でハイライトされた任意の場所に配置されているディメンションとセット フィールドは、ビューの詳細レベルに寄与します。
Tableau で詳細レベル表現がサポートされる以前は、ビュー レベル以外の詳細レベルで計算を作成できませんでした。たとえば、次の式を保存しようとすると、次のようなエラー メッセージが表示されていました。「この関数の集計および非集計の引数を混在させることはできません。」
[Sales] – AVG([Sales])
この場合、ユーザーは、個別のストアのストア売上高と全ストアの平均売上高とを比較しようとしています。このような内容は、現在では詳細レベル表現を使用して実現できるようになりました。
[Sales] - {AVG([Sales])}
これは、表範囲の詳細レベル表現として知られています。表範囲を参照してください。
詳細レベル表現の制限事項
詳細レベル表現には、次のような制限および制約が適用されます。詳細レベル表現に対するデータ ソースの制約も参照してください。
浮動小数点のメジャーを参照する詳細レベル表現は、式の中の値を比較する必要があるビューで使用されると、不安定な動作を見せることがあります。詳細については、計算のデータ型を理解する(新しいウィンドウでリンクが開く)を参照してください。
詳細レベルの式は、[データ ソース] ページには表示されません。データ ソース ページを参照してください。
ディメンション宣言でパラメーターを参照する場合、必ずパラメーターの値ではなくパラメーター名を使用してください。
データ ブレンドでは、セカンダリ データ ソースの詳細レベル表現を使用するには、プライマリ データ ソースのリンク フィールドがビューに含まれている必要があります。データ ブレンドのトラブルシューティングを参照してください。
さらに、一部のデータ ソースは、複雑さの制限があります。Tableau は、これらのデータベースに関する計算を無効にしませんが、計算があまりにも複雑な場合、クエリのエラーが発生する可能性があります。
ディメンションまたはメジャーのいずれかになる詳細レベル表現
詳細レベル表現を保存する際、式は [データ] ペインの [ディメンション] または [メジャー] エリアのいずれかに追加されます。
FIXED 詳細レベル表現は、集計式の中の参照元となるフィールドに応じて、メジャーかディメンションのいずれかになります。そのため、MIN([Date])} は、[Date] がディメンションであるためディメンションとなり、{fixed Store : SUM([Sales])} は [Sales] がメジャーであるためメジャーになります。FIXED 詳細レベル表現がメジャーとして保存されると、それをディメンションに移動することができます。
INCLUDE および EXCLUDE 詳細レベル表現は、常にメジャーです。
フィルターと詳細レベル表現
Tableau にはいくつか異なる種類のフィルターが含まれており、それらは上から下へ次の順序で実行されます。
右側のテキストは、このシーケンスで詳細レベル表現が評価される位置を表します。
抽出フィルター (オレンジ色) は、Tableau Extract をデータ ソースから作成する場合にのみ関係します。表計算フィルター (ダーク ブルー) は、計算が実行された後に適用されるので、計算に使用される参照元のデータを除外せずにマークを非表示にします。
SQL に詳しいのであれば、メジャー フィルターがクエリ内の HAVING 句に相当し、ディメンション フィルターが WHERE 句に相当すると考えることができます。
FIXED 計算はディメンション フィルターの前に適用されるので、[フィルター] シェルフ上のフィールドを コンテキスト フィルターの使用 にプロモートしない限り、フィールドは無視されます。たとえば、ビューの中で、1 つのシェルフに次のような計算があり、別のシェルフに [State] があるとします。
SUM([Sales]) / ATTR({FIXED : SUM([Sales])})
この計算からは、総売上高に対する州の売上高の比率が計算されます。
その後、[フィルター] シェルフに [State] を配置して州の一部を非表示にすると、フィルターは計算の分子の部分にのみ影響します。分母は FIXED 詳細レベルの式なので、ビューに表示されたままの州の売上が、ビューから除外された州を含む全州の総売上に対して割り算されます。
INCLUDE および EXCLUDE 詳細レベル表現は、ディメンション フィルターの後に考慮されます。そのため、FIXED 詳細レベル表現にはフィルターを適用するけれども、コンテキスト フィルターは使用しないのであれば、INCLUDE 式または EXCLUDE 式としてフィルターを書き換えることを考慮してください。
集計と詳細レベル表現
ビューの詳細レベルによって、ビューの中のマークの数が決まります。ビューで詳細レベル表現を使用する場合、Tableau は 2 つの詳細レベル (1 つはビューに含まれ、もう 1 つは式に含まれる) を調整する必要があります。
ビュー内の詳細レベル表現の挙動は、式の詳細レベルが大まか、細かい、またはビュー内の詳細レベルと同じであるかどうかに依存して変化します。この場合、「大まか」または「細かい」とはどういう意味ですか?
ビューの詳細レベルよりも大まかな詳細レベル表現
ビュー内のディメンジョンのサブセットを参照する際、式には、ビューより大まかな詳細レベルが含まれます。たとえば、[Category] ディメンジョンおよび [Segment] ディメンジョンを含むビューの場合、次のディメンションのいずれかのみを使用する詳細レベル表現を作成します。
{FIXED [Segment] : SUM([Sales])}
この場合、式には、ビューより大まかな詳細レベルが含まれます。その値は 1 つのディメンジョン ([Segment]) に基づきますが、ビューは 2 つのディメンジョン ([Segment] および [Category]) に基づきます。
その結果、ビュー内で詳細レベル表現を使用すると特定の値が複製されます。つまり、複数回表示されます。
複製された値は、カテゴリー内で特定の値を平均値と比較する際に役立ちます。たとえば、以下の計算では、総平均売上高から顧客の平均売上高を減算します。
[Sales] - {FIXED [Customer Name] : AVG([Sales])}
値の複製中、ビューの中の関連フィールドの集計を (たとえば、AVG から SUM に) 変更しても、集計結果は変更されません。
ビューの詳細レベルより細かい詳細レベルの式
ビュー内のディメンジョンのスーパーセットを参照する際、式には、ビューより細かい詳細レベルが含まれます。ビューの中でそのような式を使用すると、ビュー レベルまで結果を集計します。たとえば、以下の詳細レベルは、2 つのディメンジョンを参照します。
{FIXED [Segment], [Category] : SUM([Sales])}
詳細レベルとして [区分] のみを持つビューの中でこの式を使用する場合、値は集計する必要があります。その式をシェルフにドラッグすると表示される内容は、次のとおりです。
AVG([{FIXED [Segment]], [Category]] : SUM([Sales]])}])
集計― この場合は平均―は自動的に割り当てられます。必要に応じて、集計を変更できます。
ビューへの詳細レベル表現の追加
ビューの中で、詳細レベル表現が集計されるか複製されるかは、式のタイプ (FIXED, INCLUDE, or EXCLUDE) および式の詳細がビューより大まかか細かいかによって決まります。
INCLUDE 詳細レベル表現には、ビューと同じ詳細レベル、またはビューより細かい詳細レベルのいずれかがあります。そのため、値が複製されることはありません。
FIXED 詳細レベル表現は、ビューより細かい詳細レベル、より大まかな詳細レベル、または同等の詳細レベルを持つことができます。FIXED 詳細レベルの結果を集約する必要性は、ビュー内のディメンジョンが何かに依存します。
EXCLUDE 詳細レベル表現は、ビューに複製された値が常に表示されるようにします。EXCLUDE 詳細レベル表現を含む計算がシェルフに配置されると、式は実際には集計されず、集計を変更してもビューに影響が及ばないことを示すために、デフォルトで ATTR 集計 (SUM または AVG とは対照的) になります。
詳細レベル表現は、ビュー内のシェルフに追加される際、ディメンジョンとして使用される場合を除き、常に自動的に集計されます。シェルフとタイプをダブルクリックすると、
{FIXED[Segment], [Category] : SUM([Sales])}
その後、Enter キーを押し、シェルフに現在表示されている式をコミットします。
SUM({FIXED[Segment], [Category] : SUM([Sales])})
ただし、シェルフをダブルクリックして式を編集する場合、編集モードで表示されるのは元の式です。
詳細レベルの作成時に、集約レベルの式を集計にラップすると、その式を含む任意の計算がシェルフに配置された場合、集計を新たに割り当てるのではなく、指定した集計が使用されます。集計が必要ない場合 (式の詳細レベルは、ビューの詳細レベルよりも大まかなため)、式がシェルフにある場合、指定した集約がそのまま示されますが、無視されます。
詳細レベル表現に対するデータ ソースの制約
一部のデータ ソースでは、より新しいバージョンでのみ詳細レベル表現をサポートしています。一部のデータ ソースは、詳細レベル表現をまったくサポートしていません。
さらに、一部のデータ ソースは、複雑さの制限があります。Tableau は、これらのデータベースに関する計算を無効にしませんが、計算があまりにも複雑な場合、クエリのエラーが発生する可能性があります。
データ ソース | サポート |
Actian Vectorwise | サポートされていません。 |
Amazon EMR Hadoop Hive | Hive 0.13 以降でサポート。 |
Amazon Redshift | サポート済み。 |
Aster Database | バージョン 4.5 以降でサポート。 |
Cloudera Hadoop | Hive 0.13 以降でサポート。 |
Cloudera Impala | Impala 1.2.2 以降でサポート。 |
キューブ (多次元データ ソース) | サポートされていません。 |
DataStax Enterprise | サポートされていません。 |
EXASOL | サポート済み。 |
Firebird | バージョン 2.0 以降でサポート。 |
汎用 ODBC | 制限。特定のデータ ソースに依存。 |
Google Big Query | 標準 SQL はサポートされていますが、レガシー SQL はサポートされていません。 |
Hortonworks Hadoop Hive | Hive 0.13 以降でサポート。 HIVE バージョン 1.1 では、交差結合を生成する詳細レベル表現は、信頼性が高くありません。 交差結合は、結合する明示的なフィールドがない場合に発生します。たとえば、詳細レベル表現 |
IBM BigInsights | サポート済み。 |
IBM DB2 | バージョン 8.1 以降でサポート。 |
MarkLogic | バージョン 7.0 以降でサポート。 |
Microsoft Access | サポートされていません。 |
Microsoft Jet ベースの接続 (Microsoft Excel、Microsoft Access、およびテキスト用のレガシー コネクタ) | サポートされていません。 |
Microsoft SQL Server | SQL Server 2005 以降。 |
MySQL | サポート済み。 |
IBM PDA (Netezza) | バージョン 7.0 以降でサポート。 |
Oracle | バージョン 9i 以降でサポート。 |
Actian Matrix (ParAccel) | バージョン 3.1 以降でサポート。 |
Pivotal Greenplum | バージョン 3.1 以降でサポート。 |
PostgreSQL | バージョン 7 以降でサポート。 |
Progress OpenEdge | サポート済み。 |
SAP HANA | サポート済み。 |
SAP Sybase ASE | サポート済み。 |
SAP Sybase IQ | バージョン 15.1 以降でサポート。 |
Spark SQL | サポート済み。 |
Splunk | サポートされていません。 |
Tableau Data Extract | サポート済み。 |
Teradata | サポート済み。 |
Vertica | バージョン 6.1 以降でサポート。 |