適切な計算の種類の選択
選択する計算タイプは、分析の必要性、答えたい質問、視覚化のレイアウトによって異なります。
どの計算が目的の分析にとって正しいでしょうか?
分析に使用するための計算タイプの選択は、必ずしも簡単ではありません。決定するときには以下の質問と例を検討してください。
注: このコンテンツは、もともと Tableau ブログで発行されたものです。「質問に対して正しい計算を選ぶための便利な手引き書」(新しいウィンドウでリンクが開く)を参照してください。
基本的な式か表計算か?
必要なデータ値は、すべて視覚化の中にありますか?
- 答えがはいの場合: 表計算を使うことができます。
- 答えがいいえの場合: 基本的な計算を使います。
例:
次の二つの視覚化について考えます。左側の視覚化は、国/地域別の合計売上を示す棒グラフです。右側の視覚化も、国/地域別の売り上げを示していますが、売上は非集計です。
これらの視覚化で、売上の 90 番目の百分位数をどうやって計算しますか?
左側の棒グラフは SUM で集計されています。そのため、このビューでは表計算を使用するための充分な詳細がありません。基本的な集計式を使って、この例の各国の売上の 90 番目の百分位数を計算することができます。次の式を使います。
PERCENTILE([Sales], .90)
これによって、棒グラフの各棒のラベルとして、国別の 90 番目の百分位数の値が得られます。
ただし、右側のグラフには各売上順のデータ値が含まれます。より大きな分散と外れ値が示されます。ビューの中に表計算を使用するのに充分な詳細があります。
分布バンド (表計算と同等) を使って、この例の各国の売上の 90 番目の百分位数を計算することができます。この視覚化にはさらに多くのコンテキストがあります。
両方の計算で同じ値が得られますが、視覚化内の詳細レベル (データの量) によってそれぞれから得られる洞察は異なります。
基本的な式か詳細レベル (LOD) 式か?
視覚化に必要なデータが全て揃っていない場合は、計算をデータ ソースに通す必要があります。つまり、基本的な計算か、LOD 式を使う必要があるということです。
質問 1 にいいえと答えた場合は、次のことを考えてみてください。
質問 2:
質問の粒度は、ビジュアライゼーションの粒度またはデータソースの粒度と一致していますか?
- 答えがはいの場合: 基本的な式を使います。
- 答えがいいえの場合: 詳細レベル (LOD) 式を使います。
例
次の視覚化を考えてみましょう。各国の全ての注文の、売上の 90 番目の百分位数を示しています。
この例では、Tableau に付属している "Sample- Superstore (サンプル - スーパーストア)" データ ソースを使用します。"Sample- Superstore (サンプル - スーパーストア)" データ ソース を見たことがあったら、"Order ID (注文 ID)" ごとのデータの行があるのをご存知かもしれません。従って、データソースの粒度は "Order ID (注文 ID)" です。ところが、視覚化の粒度は国です。
注文 ID レベルの粒度で各国の注文の売上の 90 番目の百分位数を知りたければ、次の LOD 式を使うことができます。
{INCLUDE [Order ID] : SUM([Sales])}
次に、フィールドを変更して、ビュー内で 90 番目の百分位数の集計を取ることができます。
そのために、フィールドのドロップダウン リストをクリックして、[Measure (メジャー)] > [Percentile (百分位数)] > [90] を選択します。
次の図は、このケースでどのように LOD 式が機能するかを示しています。
- データは、まず SUM(Sales) で全て集計され、国の詳細レベル、つまり SUM(Sales) at Country で集計されます。
- LOD 計算が適用され、データの粒度が高くなります。国の SUM(Sales) + Order ID になります。
- > LOD 計算が 90 番目の百分位数で集計されます。PCT90(SUM(Sales) at Country + Order ID)
結果は、次のようになります。
表計算か詳細レベル (LOD) 式か?
表計算か LOD 計算かを選ぶのは、表計算と基本的な式の間でどちらを選ぶかという場合とプロセスはよく似ています。次の質問を考えてみてください。
必要なデータ値は、すべて視覚化の中にありますか?
- 答えがはいの場合は、表計算を使うことができます。
- 答えがいいえの場合は、次の質問に答えてください。質問の粒度は、視覚化の粒度またはデータソースの粒度と一致していますか? 答えがいいえの場合は、LOD 計算を使います。
表計算のみ
表計算のみが使えるというシナリオもあります。次のような場合です。
- ランキング
- 帰納 (例: 累計)
- 移動計算 (例: ローリング平均)
- 行間計算 (例: 期間 vs. 期間計算)
分析でこれらのシナリオのいずれかが必要な場合は、表計算を使用します。
例
次の視覚化を考えてみましょう。2014 年 9 月から 2015 年 9 月までの数種類の株の平均終値を示しています。
終値が過去最高値を超えた回数を確認したい場合、表計算、特に帰納的計算を使用する必要があります。
なぜでしょうか。表計算では、データの各区分 (セル、ペイン、表) に対して複数の値を出力することができるからです。基本的な式や LOD 式では、各区分またはデータのグループに対して、単一の値しか出力できません。
各株について終値が過去最高値を超えた回数を計算するには、必要なステップがいくつかあります。
- 新しい最大終値に届いたかどうかを判断するには、全ての過去の値について考慮する必要があります。これは、RUNNING_MAX 関数で行うことができます。たとえば、Record to Date (今日までの記録) というタイトルの、日 (表全体) を使って計算した次の計算を考えてみます。
RUNNING_MAX(AVG([Close]))
次に、Count Days Record Broken (記録が破られた日をカウントする) というタイトルの、日 (表全体) を使って計算した次の計算を使って、記録が破られた日にフラグを立てることができます。
IF AVG([Close]) = [Record to Date]
THEN 1
ELSE 0
END最後に、日 (表全体) を使って計算した次の計算を使ってこれらの日をカウントすることができます。
RUNNING_SUM([Count Days Record Broken])
ビューに、Avg(Close) の代わりに最後の計算フィールドを追加すると、次のようなものが得られます。