Tableau での詳細レベルの式のしくみ

この記事では Tableau でどのように詳細レベルの式が計算され、機能するかを説明します。LOD 式の詳細とそのしくみについては、Tableau Web サイトのホワイトペーパー「詳細レベル (LOD) 表現について」(Link opens in a new window)を参照してください。

行レベルの式とビュー レベルの式

Tableau では、非集計データ ソースの列を参照する式は参照元となる表の行ごとに計算されます。この場合、式の次元は、行レベルです。行レベルの式の例は次のとおりです。

[Sales] / [Profit]

この計算は、データベースの各行で評価されます。各行について、その行の [売上] の値がその行の [収益] 値で除算され、乗算の結果 (利益率) を含む新しい列が生成されます。

この定義を使用して計算を作成する場合、[ProfitRatio] という名前で保存し、それを [データ] ペインからシェルフまでドラッグします。通常は、Tableau がビューの計算フィールドを集計します。

SUM([ProfitRatio])

これとは対照的に、集計されたデータ ソースの列を参照する式は、ビュー内でディメンションにより定義された次元で計算されます。この場合、式の次元は、ビュー レベルです。ビューレベルの式の例は次のとおりです。

SUM(Sales) / SUM(Profit)

この計算をシェルフまでドラッグすると (またはアドホック計算としてシェルフに直接入力すると)、AGG 関数で囲まれます。

AGG(SUM(Sales) / SUM(Profit))

これが集計計算と呼ばれるものです。詳細については、Tableau 内の集計関数(Link opens in a new window)を参照してください。

次の図でハイライトされた任意の場所に配置されているディメンションとセット フィールドは、ビューの詳細レベルに寄与します。

Tableau で詳細レベルの式がサポートされる以前は、ビュー レベル以外の詳細レベルで計算を作成できませんでした。たとえば、次の式を保存しようとすると、次のようなエラー メッセージが表示されていました。「この関数の集計および非集計の引数を混在させることはできません。」

[Sales] – AVG([Sales])

この場合、ユーザーは、個別のストアのストア売上高と全ストアの平均売上高とを比較しようとしています。このような内容は、現在では詳細レベルの式を使用して実現できるようになりました。

[Sales] - {AVG([Sales])}

これは、表範囲の詳細レベルの式として知られています。表範囲を参照してください。

詳細レベルの式の制限事項

詳細レベルの式には、次のような制限および制約が適用されます。詳細レベルの式に対するデータ ソースの制約も参照してください。

  • 浮動小数点のメジャーを参照する詳細レベルの式は、式の中の値を比較する必要があるビューで使用されると、不安定な動作を見せることがあります。詳細については、計算のデータ型を理解する(Link opens in a new window)を参照してください。

  • 詳細レベルの式は、[データ ソース] ページには表示されません。[データ ソース] ページを参照してください。

  • ディメンション宣言でパラメーターを参照する場合、必ずパラメーターの値ではなくパラメーター名を使用してください。

  • データ ブレンドでは、セカンダリ データ ソースの詳細レベル式を使用するには、プライマリ データ ソースのリンク フィールドがビューに含まれている必要があります。データ ブレンドのトラブルシューティングを参照してください。

さらに、一部のデータ ソースは、複雑さの制限があります。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 では、交差結合を生成する詳細レベルの式は、信頼性が高くありません。

交差結合は、結合する明示的なフィールドがない場合に発生します。たとえば、詳細レベルの式 {fixed [Product Type] : sum(sales)} では、ビューが 1 つのディメンション [Ship Mode] のみを含んでいる場合、交差結合が作成されます。交差結合では、1 番目のテーブルの各行と 2 番目のテーブルの各行を組み合わせた行を生成します。

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 以降でサポート。

次も参照してください。

Tableau での詳細レベルの式の作成

詳細レベル (LOD) 表現について(Link opens in a new window)

ありがとうございます! フィードバックの送信中にエラが発生しました。もう一度やり直すか、メッセージをお送りください