ナレッジベース

条件を満たすディメンション メンバーのカウント


発行: 05 Sep 2017
最終修正日: 20 Jul 2023

ご質問

条件を満たすディメンション メンバーのカウントを計算する方法。

環境

Tableau Desktop

回答

一般的に、条件を満たすディメンション メンバーをカウントする式は次のとおりです。
 
{ FIXED [Dimension] : SUM(
IF <Condition>
THEN 1
ELSE 0
END
) }

この一般的な式は複数の使用事例で使用できます。次に示すのは、サンプル データ セット "Superstore (スーパーストア)" を使用するいくつかの例です。 
クリックしてソリューションを展開する
例 1: パラメーターによる値の範囲の使用
この例では、ビューの [行] に [Category (カテゴリ)] と [Segment (顧客区分)] が含まれています。目標は、カテゴリと顧客区分のすべての組み合わせについて売上が 2 つのパラメーター値の間である顧客数をカウントすることです。
  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "# of Customers with Select Sales (選択した売上の顧客数)" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。
      IF { INCLUDE [Customer Name] : SUM([Sales])} >= [Sales Lower Limit]
      AND { INCLUDE [Customer Name] : SUM([Sales])} <= [Sales Upper Limit]
      THEN 1
      ELSE 0
      END
  3. [# of Customers with Select Sales (選択した売上の顧客数)] を [マーク] カードの [テキスト] にドラッグします。
クリックしてソリューションを展開する
例 2: テキスト値の使用
この例では、ビューの行に [Order ID (オーダー ID)] と [Product Name (製品名)] が含まれており、目標は製品 "Staple holder (ホチキス針ホルダー)" が含まれるオーダーをカウントすることです。
  1. "# of Orders with a Staple holder (ホチキス針ホルダーを含むオーダーの数)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    { FIXED [Order ID] : MAX(
    IF [Product Name] = "Staple holder"
    THEN 1
    ELSE 0
    END)}

  2. [# of Orders with a Staple holder (ホチキス針ホルダーを含むオーダーの数)] を [マーク] カードの [テキスト] にドラッグします。
クリックしてソリューションを展開する
例 3: カテゴリの作成

この例では、[State (州)] が [テキスト] に追加されており、目標は赤字利益の都市の数によって州を分類することです。

  1. "# of Unprofitable Cities (不採算の都市の数)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    { FIXED [State] : SUM(
    IF { INCLUDE [City] : SUM([Profit]) } < 0
    THEN 1
    ELSE 0
    END
    ) }

  2. "Categories based on city profit (都市の利益に基づくカテゴリ)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    IF [# of Unprofitable Cities] = 0
    THEN "All cities have positive profit"
    ELSEIF [# of Unprofitable Cities] = 1
    THEN "One city has negative profit"
    ELSE "Multiple cities have negative profit"
    END

  3. [Categories based on city profit (都市の利益に基づくカテゴリ)] を [列] シェルフ] にドラッグします。
クリックしてソリューションを展開する
例 4: 表関数の使用
この例では、ビューは既にフィルターされ、各顧客区分のカテゴリごとの売上によって上位 10 人の顧客が表示されています。目標は、赤字利益の顧客が 3 人以上いるカテゴリ/顧客区分をハイライトすることです。
  1. "3+ Top 10 Customers w/ Neg Profit (上位 10 人の顧客中 3 人以上が赤字利益)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    IF
    WINDOW_SUM(
    IF SUM([Profit]) < 0
    AND [Sales Rank] <= 10
    THEN 1
    ELSE 0
    END ) > 2
    THEN "Three or more customers with negative profit"
    ELSE "Good standing"
    END

  2. [3+ Top 10 Customers w/ Neg Profit (上位 10 人の顧客中 3 人以上が赤字利益)] を [マーク] カードの [色] にドラッグします。
  3. [色] で [3+ Top 10 Customers w/ Neg Profit (上位 10 人の顧客中 3 人以上が赤字利益)] を右クリックし、[次を使用して計算] > "Customer Name (顧客名)" を選択します。

詳細情報

例 1 の注意事項:
  • INCLUDE 式が必要なのは、[Customer Name (顧客名)] がビューにないためです。
  • SUM([Sales]) はビューの詳細レベル (この例では [Category (カテゴリ)] と [Segment (顧客区分)]) に加え、INCLUDE 式でリストされている [Customer Name (顧客名)] に合わせて集計されます。
  • [# of Customers with Select Sales (選択した売上での顧客数)] 計算では、顧客ごとの売上高が [Sales Upper Limit (売上上限)] より下かつ [Sales Upper Limit (売上下限)] より上であるかどうかが評価されます。顧客ごとの売上が指定された範囲内にある場合、この計算からは 1 が返され、顧客数のカウントとして機能します。
  • この計算は COUNTD() を使用して作成することもできます。
例 2 の注意事項:
  • IF ステートメントでは、参照元データ セット内のすべてのレコードが読み取られ、[Product Name (製品名)] が "Staple holder (ホチキス針ホルダー)" であるかどうかが確認されます。そうである場合、この計算からはそのレコードについて 1 が返されます。その後、FIXED 式により、[Order ID (オーダー ID)] の値が同じであるすべてのレコードについて、1 と 0 のうちの最大値が返されます。
  • Superstore (スーパーストア) では、[Product Name (製品名)] と [Order ID (オーダー ID)] の固有の組み合わせすべてについて、レコードは 1 つだけです。つまり、MAX() を SUM() で置き換えても同じ結果が返されます (1 の値を合計することと 1 の値の最大値を取ることは同じであるため)。
例 3 の注意事項:
  • [State (州)] が FIXED 式にあるため、INCLUDE 式では州および都市ごとの利益の合計が返されます。その後、この計算からは利益のなかった都市ごとに 1 が返されます。これを利用して都市をカウントできます。
例 4 の注意事項:
  • この例で詳細レベル (LOD) 式ではなく表計算を使用する必要があるのは、表計算フィルターでは参照元データがフィルターされないためです。そのため、ランク計算の内部に条件を追加する必要がありますが、RANK() は表関数であり、LOD 計算の内部では使用できません。
  • 表計算はビュー内のすべての非集計ディメンションから影響を受けます。表計算から正しい結果が返されない場合、その表計算がビュー内のディメンションによって計算される方法が原因である可能性があります。この問題を解決するには、[次を使用して計算] オプションを変更します。詳細については、「表計算を使用して値を変換する」を参照してください。
この記事で問題は解決しましたか?