ナレッジベース

計算にフィルターを含め、フィルター カードには含めない


発行: 30 Nov 2015
最終修正日: 20 Jul 2023

ご質問

ビュー全体をフィルターせずに、1 つまたは複数のフィールドをフィルターする方法。

環境

Tableau Desktop

回答

IF / THEN ステートメントを使用してロジック計算を作成し、特定のディメンション値のみに対してメジャーを返します。ディメンション値をハードコードにしたり、パラメーターやセットで動的に定義することができます。

以下の指示は、この記事の右側のペインからダウンロード可能なワークブックの "Original (オリジナル)" ワークシートから始まります。"Original (オリジナル)" ワークシートの作成方法に関する指示とすべてのバリエーションのデモは、このワークブック内に含められています。

バリエーション 1: ディメンション値のハードコーディング

  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに「Sales Label (variation 1) (売上ラベル (バリエーション 1))」という名前が付けられています。
    2. 式フィールドで、次のような計算を作成します。

      IF DATEPART('year', [Order Date]) = 2019
      THEN [Sales]
      END

      上記の計算では、[Order Date (注文日)] が 2019 年にある場合、メジャー [Sales (売上)] が返されます。そうでない場合、計算は NULL を返します。"END" の前に "ELSE 0" を追加すると、NULL ではなく、ゼロを返すことができます。

      他の条件を使用すると、[Order Date] = #1/1/2019# で特定の日付に絞り込んだり、[Segment] = "Consumer" で特定のテキスト値に絞り込むことができます。重要な点は、等号の後の値をディメンションと同じデータ型にする必要があることです。
  3. ラベルの [Sales (売上)] を [Sales Label (variation 1) (売上ラベル (バリエーション 1))] に置き換えます。
 

バリエーション 2: パラメーターの使用

  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに「Year of Order Date (注文日の年)」という名前が付けられています。
    2. 式フィールドで、次のような計算を作成します。

      DATEPART('year', [Order Date])

      ステップ 1 および 2 で、[Order Date (注文日)] の年と日付の部分のみが整数値として含まれるフィールドを作成します。[Year of Order Date (注文日の年)] フィールドによりパラメーターの作成が簡単になりますが、それ以外の場合は不要です。
  3. データ ペインで、[Year of Order Date (注文日の年)] フィールドを右クリックし、[作成] > [パラメーター…] を選択します。
  4. [パラメーターの作成] ダイアログ ボックスで、次の操作を行い、[OK] をクリックします。
    1. [名前] テキスト ボックスに名前を入力します。この例では、パラメーターの名前を "Select a year (年の選択)" にします。
    2. [プロパティ] にあるデータ型リストで [整数] を選択します。
    3. [許容値] の下で、[リスト] を選択します。
    4. [表示形式] ドロップダウンで [数値 (カスタム)] を選択し、形式を 0 小数点に設定し、[桁区切り記号を含める] をオフにします。
    • Tableau Desktop 2020.1 以降では、[ワークブックを開いたとき] ドロップダウンでフィールドを選択することにより、パラメーターでデータ ソースのフィールドからリスト値をプルすることができます。
  5. データ ペインで [Select a year (年の選択)] を右クリックし、[パラメーター コントロールの表示] を選択します。
  6. 「Sales Label (variation 2) (売上ラベル (バリエーション 2))」などの名前を付けて、次のような計算の計算フィールドを作成します。

    IF DATEPART('year', [Order Date]) = [Parameters].[Select a year]
    THEN [Sales]
    END

    注: データ ソースの別のフィールドと同じ名前がパラメーターに指定されている場合、構文 "[Parameters]." は自動的に追加されます。
  7. ラベルの [Sales (売上)] を [Sales Label (variation 2) (売上ラベル (バリエーション 2))] に変更します。

バリエーション 3: セット コントロールの使用

Tableau Desktop 2020.2 以降では、セット コントロールを表示できるため、エンド ユーザーはセットの値を変更できます。
  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに「Year of Order Date (注文日の年)」という名前が付けられています。
    2. 式フィールドで、次のような計算を作成します。

      DATEPART('year', [Order Date])
  3. [Year of Order Date (注文日の年)] を右クリックし、[ディメンションに変換] を選択します。

    ステップ 1 ~ 3 で、[Order Date (注文日)] の年と日付の部分のみが整数値として含まれるディメンションを作成します。セットはデータ ソースのフィールドで構成する必要があるため、年のセットを作成するには、[Year of Order Date (注文日の年)] フィールドが必要です。
  4. データ ペインで [Year of Order Date (注文日の都市)] フィールドを右クリックし、[作成] > [設定…] を選択します。
  5. セットに名前を付けて [OK] をクリックします。この例では、セットに「Select a year (年の選択)」という名前が付けられています。
  6. 「Sales Label (variation 3) (売上ラベル (バリエーション 3))」などの名前を付けて、次のような計算の計算フィールドを作成します。

    IF [Select a year]
    THEN [Sales]
    END

    ユーザーが選択した年に [Order Date (注文日)] がある場合、上記の計算は、メジャー [Sales (売上)] を返します。そうでない場合、計算は NULL を返します。"END" の前に "ELSE 0" を追加すると、NULL ではなく、ゼロを返すことができます。

    TRUE または FALSE を返すブール型フィールドを設定し、セット自体が条件全体になるようにします。
  7. ラベルの [Sales (売上)] を [Sales Label (variation 3) (売上ラベル (バリエーション 3))] に置き換えます。
  8. データ ペインでセット [Select a year (年の選択)] を右クリックし、[セットの表示] をオンにします。

詳細情報

パラメーターとセット

  • パラメーターは単一の値のみを保持できますが、セット コントロールでは、複数の値を選択できます。
  • パラメーターは任意の値を保持できますが、セットは、データ ソースのフィールドに常に結び付けられます。ただし、それらのフィールド値は再度エイリアスにできます。
  • パラメーターを使用して、関係が設定されていないデータ ソースをフィルターできます。「パラメーターを使用して複数のデータ ソースをフィルターする」を参照してください。データ ソース間で関係が設定されている場合、セットはデータ ソースのみをフィルターできます。「複数のデータ ソースでのデータのフィルター」を参照してください。
  • パラメーターはダッシュボードのテキスト オブジェクトやタイトルで使用できますが、セット (または、セットを使用した計算フィールド) は、データ ソースの一部であるため、ワークシート要素のみで使用できます。
  • 新しいデータがデータ ソースに取り込まれると、セットは常に更新されます。新しいデータを取り込むようにパラメーターをセットアップできます。「パラメーターの作成」のステップ 5 を参照してください。


このソリューションは、他の計算内にネストできます。たとえば、次のような詳細レベル (LOD) 計算に含めることができます。
{INCLUDE [Dimension]: SUM(IF [Dimension] = 'FilterValue' THEN [Non-Aggregated Measure] END)}


この記事で問題は解決しましたか?