ナレッジベース

複数のディメンションに同じテキスト値が含まれるかどうかを判断する


発行: 21 Jun 2017
最終修正日: 11 Oct 2023

ご質問

同じ行の各ディメンションのメンバー値が同じ無視する NULL 値であるかどうかを判断するために、複数の文字列ディメンションを比較する方法。

すべてのディメンションが同じ値で、無視する NULL 値を持つ場合はその値を返し、そうでない場合は複数の値があることのフラグとしてテキスト値を返します。

環境

Tableau Desktop

回答

クリックしてソリューションを展開する
オプション 1: データをピボット処理する
  1. すべてのディメンション名が 1 つのフィールドに含まれ、すべてのディメンション メンバーが別のフィールドに含まれるように、データをピボット処理します。
  2. データ ソースによっては、フィールドを Tableau Desktop 接続でピボット処理できます。Tableau Desktop でのデータのピボット処理の方法の詳細については、「ピボット データ ([列] から [行])」を参照してください。
  3. [分析] > [計算フィールドの作成] を選択します。
  4. 計算フィールドに "Comparison (比較)" という名前を付け、次の式を入力して [OK] をクリックします。 
    { FIXED [ID] :
    IF COUNTD([Pivot Field Values]) <= 1
    THEN MIN([Pivot Field Values])
    ELSE "Mulitple Values"
    END
    }
クリックしてソリューションを展開する
オプション 2: 表計算を使用する
データの構造を変更できない場合、トーナメント スタイルで 2 つの計算の各セットを比較する一連の計算を使用して同じ結果を返すことができます。たとえば、[A]、[B]、[C]、および [D] という 4 つのディメンションがある場合、2 つの "レベル 1" 計算を作成します。1 つは [A] と [B] を比較し、1 つは [C] と [D] を比較します。次に計算フィールド [AB] と [CD] を比較する 1 つの "レベル 2" 計算を作成します。
添付のワークブックの例では、サンプル データを使用して次の方法を示しています。
  1. [分析] > [計算フィールドの作成] を選択します。
  2. 計算フィールドに "comparison lvl 1 - AB (比較レベル 1 - AB)" という名前を付け、次の式を入力して [OK] をクリックします。 
    IF ISNULL( [Dimension A] )
    OR ISNULL( [Dimension B] )
    THEN IFNULL( [Dimension A],  "" ) +  IFNULL( [Dimension B], "" )
    ELSEIF [Dimension A] = [Dimension B]
    THEN [Dimension A]
    ELSE "Multiple Values"
    END
    }
  3. 2 つのディメンションのすべてのグループについて、ステップ 1 と 2 を繰り返します。
  4. [分析] > [計算フィールドの作成] を選択します
  5. 計算フィールドに "comparison lvl 2 - ABCD (比較レベル 2 - ABCD)" という名前を付け、次の式を入力して [OK] をクリックします。 
    IF [comparison lvl 1 - AB] = ""
    OR [comparison lvl 1 - CD] = ""
    THEN [comparison lvl 1 - AB] + [comparison lvl 1 - CD]
    ELSEIF [comparison lvl 1 - AB] = [comparison lvl 1 - CD]
    THEN [comparison lvl 1 - AB]
    ELSE "Multiple Values"
    END
    }
  6. 2 つのレベル 1 計算の各セットについて、ステップ 4 と 5 を繰り返します。
  7. [分析] > [計算フィールドの作成] を選択します。
  8. 計算フィールドに "comparison lvl 3 (比較レベル 3)" という名前を付け、次の式を入力して [OK] をクリックします。 
    IF [comparison lvl 2 - ABCD] = ""
    OR [comparison lvl 2 - EFGH] = ""
    THEN [comparison lvl 2 - ABCD] + [comparison lvl 2 - EFGH]
    ELSEIF [comparison lvl 2 - ABCD] = [comparison lvl 2 - EFGH]
    THEN [comparison lvl 2 - EFGH]
    ELSE "Multiple Values"
    END
    }
この記事で問題は解決しましたか?