ナレッジベース

NULL や欠落しているデータをゼロまたは既存データで置き換える


発行: 27 Mar 2017
最終修正日: 09 Feb 2024

ご質問

NULL や欠落しているデータをゼロで置き換える方法

たとえば、すべてのプロジェクトではビューに 3 つの段階が存在する必要があり、ある段階で [Amount (量)] データが存在しないと、ビューにはゼロが表示されます。

環境

Tableau Desktop

回答

クリックしてオプション 1 を展開する
オプション 1: ZN を使用する
  1. [分析] > [計算フィールドの作成] を選択します。
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "Replace empty cells with zero (opt 1) (空のセルをゼロで置換 (オプション 1))" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。
      ZN(SUM([Amount])) 
    • ZN() 関数により、すべての NULL 値がゼロで置換されます
  3. 「Replace empty cells with last value (opt 1) (空のセルを最後の値で置換 (オプション 1))」などの名前を付けて、次のような計算の計算フィールドを作成します。
    • IFNULL(
          SUM([Amount]),
          PREVIOUS_VALUE(0)
      )
    • IFNULL(..., PREVIOUS_VALUE(0)) は NULL 値をこの計算の最後の値で置換し、これにより実行中の最後の値が作成されます。
    • ビューの作成方法によっては、別の方法で PREVIOUS_VALUE() を計算する必要がある場合があります。「表計算での値の変換」を参照してください
  4. 必要となる最終的な結果に応じ、[マーク] カードの [テキスト] にある [Amount (量)] を [Replace empty cells with zero (opt 1) (空のセルをゼロで置換 (オプション 1))] または [Replace empty cells with last value (opt 1) (空のセルを最後の値で置換 (オプション 1))] で置換します
  5. (オプション) 値を右クリックして必要に応じて書式設定することにより、ビューの値をカスタマイズします。
次のビデオで説明されている手順を表示するには、上記セクションを展開します。
注: ビデオに音声はありません。
 
クリックしてオプション 2 を展開する
オプション 2: フィルターをパラメーターで置換する
このオプションでは、NULL データと、ビューからフィルターで除外されたデータがゼロで置換されます。
  1. [データ] ペインの [ディメンション] の隣にある下矢印をクリックし、[パラメーターの作成...] を選択します。
  2. [パラメーターの作成] ダイアログで、次の操作を行い、[OK] をクリックします。
    1. パラメーターに名前を付けます。この例では、"Date Parameter (日付パラメーター)" という名前にします。
    2. [データ型] で [日付] を選択します。
    3. [許容値] で [すべて] を選択します。
  3. [データ] ペインの [Date Parameter (日付パラメーター)] を右クリックし、[パラメーター コントロールの表示] を選択します。
  4. [分析] > [計算フィールドの作成] を選択します。
  5. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに「Filtered Amount or zero (opt 2) (フィルターされた量または 0 (オプション 2))」という名前を付けます
    2. 式フィールドで、次のような計算を作成します。
      ZN( IF [Date] >= [Date Parameter]
      THEN [Amount] 
      END )
      
    • ZN() 関数により、すべての NULL 値がゼロで置換されます。IF ステートメントは [Date (日付)] フィルターに取って代わります。
  6. 「Filtered Amount or last value (opt 2) (フィルターされた量または最後の値 (オプション 2))」などの名前を付けて、次のような計算の計算フィールドを作成します。
    1. IFNULL(
          SUM(
          IF [Date] >= [Date Parameter]
          THEN [Amount]
          END
          ),
          PREVIOUS_VALUE(0)
      )
    • IFNULL(..., PREVIOUS_VALUE(0)) は NULL 値をこの計算の最後の値で置換し、これにより実行中の最後の値が作成されます。
    • ビューの作成方法によっては、別の方法で PREVIOUS_VALUE() を計算する必要がある場合があります。「表計算での値の変換」を参照してください
  7. 必要となる最終的な結果に応じ、[マーク] カードの [テキスト] にある [Amount (量)] を [Filtered Amount or zero (opt 2) (フィルターされた量または 0 (オプション 2))] または [Filtered Amount or last value (opt 2) (フィルターされた量または最後の値 (オプション 2))] で置換します
  8. [Date (日付)] を [フィルター] シェルフから削除します。
  9. (オプション) 値を右クリックして必要に応じて書式設定することにより、ビューの値をカスタマイズします。
次のビデオで説明されている手順を表示するには、上記セクションを展開します。
注: ビデオに音声はありません。
 
クリックしてオプション 3 を展開
オプション 3: ビューを作り直して ZN(LOOKUP()) を使用する
このオプションでは、NULL、欠落しているデータ、またはフィルターで除外されたデータがゼロで置換されます。
  1. [Stage (段階)] を [行] シェルフから [列] シェルフにドラッグします。
  2. [分析] > [計算フィールドの作成] を選択します。
  3. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "Replace empty cells with zero (opt 3) (空のセルをゼロで置換 (オプション 3))" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。
      ZN(LOOKUP(SUM([Amount]),0))
      • LOOKUP() 計算により、ビューの現在のセル (LOOKUP() の 2 番目の引数である 0 によって指定される) が参照され、その値が NULL である場合は ZN() 関数からゼロが返されます。
      • この計算では行/列は追加されず、空のセルへの書き込みだけが行われるため、このオプションが機能するには、ビューに空のセルが存在する必要があります。たとえば、[Stage (段階)] が [行] にある場合、"Hibagon" にある段階行は 1 つだけです。[Stage (段階)] が [列] に移動されると、ビュー内の 1 つ以上の別プロジェクトに各段階があるため、"Hibagon" にある段階列は 3 つになります。
  4. 「Replace empty cells with last value(opt 3) (空のセルを最後の値で置換 (オプション 3))」などの名前を付けて、次のような計算の計算フィールドを作成します。
    1. IFNULL(
          LOOKUP(SUM([Amount]),0),
          PREVIOUS_VALUE(0)
      )
    • IFNULL(..., PREVIOUS_VALUE(0)) は NULL 値をこの計算の最後の値で置換し、これにより実行中の最後の値が作成されます。
    • ビューの作成方法によっては、別の方法で PREVIOUS_VALUE() を計算する必要がある場合があります。「表計算での値の変換」を参照してください
  5. 必要となる結果に応じ、[マーク] カードの [テキスト] にある [Amount (量)] を [Replace empty cells with zero (opt 3) (空のセルをゼロで置換 (オプション 3))] または [Replace empty cells with last value (opt 3) (空のセルを最後の値で置換 (オプション 3))] で置換します
  6. (オプション) 値を右クリックして必要に応じて書式設定することにより、ビューの値をカスタマイズします。
次のビデオで説明されている手順を表示するには、上記セクションを展開します。
注: ビデオに音声はありません。
 
クリックしてオプション 4 を展開
オプション 4: 元のデータを値のマスター リストに結合する
このオプションでは、NULL、欠落しているデータ、またはビューからフィルターで除外されたデータの位置にゼロが表示されます。
  1. すべての段階のマスター リストが含まれるテキスト ファイルを作成します。
  2. 元のデータとマスター リストの間でクロスデータベース結合を作成します。結合計算を使用して、1 = 1 で表を結合します。
    • 結合計算は Tableau Desktop 10.2 で追加された新機能です。以前のバージョンでは、参照元データ ソースでダミーのリンク フィールドを作成する必要があります。
    • クロスデータベース結合や結合計算を作成する方法の詳細については、「データの結合」を参照してください。
  3. [分析] > [計算フィールドの作成] を選択します。
  4. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに「New Amount with zeros (0 を含む新しい量)」という名前を付けます
    2. 式フィールドで、次のような計算を作成します。
      ZN( IF [Stage] = [Stage (Stage Master List)] 
      THEN [Amount] 
      END )
    • 結合により重複データが作成されるので、重複を削除するために、ディメンションが NULL であるか、マスター リストの同じ値で値が欠落している場合に、そのデータのみを表示します。
    • ZN() 関数により、すべての NULL 値がゼロで置換されます。
  5. 「New Amount with last value (最後の値を含む新しい量)」などの名前を付けて、次のような計算の計算フィールドを作成します。
    1. IFNULL(
          SUM( IF [Stage] = [Stage (Stage Master List)]
          THEN [Amount]
          END),
          PREVIOUS_VALUE(0)
      )
    • IFNULL(..., PREVIOUS_VALUE(0)) は NULL 値をこの計算の最後の値で置換し、これにより実行中の最後の値が作成されます。
    • ビューの作成方法によっては、別の方法で PREVIOUS_VALUE() を計算する必要がある場合があります。「表計算での値の変換」を参照してください
  6. 必要となる最終的な結果に応じ、[New Amount with zeros (0 を含む新しい量)] または [New Amount with last value (最後の値を含む新しい量)] を使用します
  7. (オプション) 値を右クリックして必要に応じて書式設定することにより、ビューの値をカスタマイズします。
次のビデオで説明されている手順を表示するには、上記セクションを展開します。
注: ビデオに音声はありません。
 
クリックしてオプション 5 を展開
オプション 5: 欠落しているデータを参照元データ セットに追加する
元のデータ ソースを編集し、欠落しているデータを追加します。

使用事例によっては、NULL のメジャーを持つダミーのレコードを追加してから上のオプション 1 の手順に従うことが最善の解決策である場合もあります。

詳細情報

添付のワークブックの例では、"Superstore (スーパーストア)" サンプル データを使用して上記のオプションを示しています。すべての手順は "Original (オリジナル)" ワークシートから始まります。

ゼロで置換する必要のあるブランクが発生するシナリオには、主に以下の 3 つがあります。
  • NULL データ: これは、参照元データ セットにレコードが含まれるがメジャー バリューが NULL または空白である場合に発生します。添付の "NULL and Missing Examples.xlsx" Excel ワークブックでは、"Brosnya" プロジェクトで [In-Progress (進行中)] と [Completed (完了済み)] が NULL になっています。
  • 欠落しているデータ: これは、参照元データ セットにレコードがない場合に発生します。サンプル データでは、"Hibagon" プロジェクトで [In-Progress (進行中)] と [Completed (完了済み)] が欠落しています。
  • フィルター データ: 添付のワークブックには、"Dalmatian" プロジェクトで [Started (開始済み)] と [In-Progress (進行中)] もフィルターで除外する [Date (日付)] フィルターがあります。プロジェクト "Dalmatian" では、参照元データ ソース内にすべての段階のレコードがあります。
すべてのオプションで、NULL データはゼロに置換されます。オプション 3、4、および 5 では、欠落しているデータがゼロに置換されます。オプション 2、3、および 4 では、フィルターで除外されたデータがゼロに置換されます。

[分析] > [表のレイアウト] > [空の行を表示]/[空の列を表示] オプションを使用すると、追加の行/列をビューに表示することができますが、これらの行に書き込み可能なデータはありません。

クロス集計にメジャーが 1 つしかない場合、書式設定オプションですべての NULL 値を置き換えることができます。「NULL 値の書式設定」を参照してください。
この記事で問題は解決しましたか?