Qlik Trainingブログ

  • データ準備
2021.08.12

Null(値がないデータ)を選択するには?

Null(値がないデータ)を選択するには?

皆さんはQlik Senseのチャートの値に「-」が入っているのを、見つけたことはありませんか?
これはNULL、つまり「値が無い」ことを表しています。Qlik Senseではこのように、NULLのデータも「-」として可視化できる、という強みがあります。

ただし、このNULLを表す「-」は、実態として値が無いという理由から、他のデータのように画面上から選択することができません。

NULLに関連するデータを確認する場合や、なぜNULLが入っているのか原因追求する場合は、このNULLを選択できると便利ですよね。このページでは、Qlik SenseでNULLを選択するにはどのようにすればよいか、お伝えします。

目次

※本記事は バージョン「May 2021」の[SaaS]で作成しています。

NULLが発生するパターン

「NULL」とは、そのレコードに値が無いことを表す特殊な値のことです。
Qlik SenseでNULLlが発生するパターンは大きく3つあります。

<パターン1>
最もよくあるのが、複数データの「関連付け」によって、欠損値が発生する場合です。
例えば、以下のようなケースが挙げられます。
売上テーブルには、得意先ID「B001」~「B012」の売上データが入っています。

■売上

ただしもう1つのデータ、得意先マスタには、得意先IDが「B001」~「B008」までしか用意されていません。

■得意先マスタ

これらのデータを取り込むと、共通の項目である「得意先ID」で関連付けが行われます。

このとき、編集画面上でテーブル間の項目を組み合わせたチャートを作成すると、得意先マスタには、売上に含まれる得意先ID「B009」~「B012」のデータが存在しないため、NULLが発生します。

上記のように、Qlik SenseではNULLのデータを「-」で表示するため、Nullのデータが存在していることを直感的に発見することができます。これがNULLの可視化です。

<パターン2>
続いては、JOINやConcatenateプレフィックスなどによる「テーブル連結」によって、欠損値が発生する場合です。

パターン1との違いは、テーブル間を「関連付ける」のではなく、1つのテーブルに「連結する」という点です。パターン1の例と同じ売上と得意先マスタのテーブルを、JOINプレフィックスで連結しQlik Senseに取り込むと、テーブルビューアーには1つのテーブルとして表示されます。この時点で、得意先マスタに用意されていなかった得意先ID「B009」~「B012」の「得意先名」や「地域」はNULLとして「-」で表示されます。

もちろんデータモデルビューアだけではなく、編集画面上のチャート内でも同じようにNULLは「-」で表示されます。

<パターン3>
最後のパターンは、以下の赤枠部分のように、そもそも取り込むデータに空欄が含まれている場合です。

空欄のデータはQlik SenseにNULLとして取り込まれます。

上記3つのパターンによって発生したNULLは、「-」で表されることにより、NULLが存在することを「確認する」ことはできますが、他の値のように「選択する」ことはできません。

NULLのデータを可視化できるだけでも十分Qlik Senseの素晴らしい特長ですが、さらにそのデータを選択し、関連データを確認できるようにするにはどうすればいいか、次の章でお伝えします。

NULLを選択するには?


NULLが選択できない理由は「実態として値が無いから」であるため、
選択したい場合は、NULLを別の値(文字列)に置き換えます。
NULLが発生するパターンそれぞれで、置き換える方法が少し異なります。

<パターン1の場合>
売上・得意先マスタ、それぞれのデータにNULLが存在しているわけではなく、テーブルの関連付けによってNULLが発生しているため、「Aggr関数」を使用してまずはNULLのレコードにフラグを立てます。
---------------------------------------------------------------------------------
■Aggr関数
Aggr関数とは、指定した軸項目ごとに値を集計する関数です。

  Aggr(数式, 軸項目名)

例)地区名ごとに売上金額を集計し、その結果(の配列)を返します。
  
  Aggr(Sum(売上金額),地区名)

---------------------------------------------------------------------------------
※Aggr関数について、もっと詳しく知りたい方はこちら!↓
 Qlik Training ブログ ー Aggr関数再入門(Aggr関数の詳細と使用例)ー
 https://www.ashisuto.co.jp/qlik-training_blog/article/aggr-function.html

今回はパターン1の例で、テーブルの軸に「Aggr(Count(地域),得意先ID)」を設定してみます。
※「得意先ID」ごとに「地域」の数を返します。

すると、得意先ID「B009」~「B012」は地域がNULLのため、得意先IDごとの地域のカウント数は「0」となります。


このようにAggr関数を使うことで、「地域」項目に値が入っているレコードには「1」、NULLのレコードには「0」と、フラグを立てることができるため、あとはIf関数を組み合わせて数式を記述します。
---------------------------------------------------------------------------------
例)「地域」ごとに「得意先ID」の数を数えたときに
  「0」になる場合は、「該当なし」という文字列に置き換えます

  If(Aggr(Count(地域),得意先ID)=’0’,'該当なし',地域)
---------------------------------------------------------------------------------

このように、NULLを別の値に置き換えることによって、選択できるようになります。
棒チャートでも同様に上記数式を設定すると、棒の選択が可能となります。

<パターン2,3の場合>
パターン2,3の場合は、どちらも1つのテーブルの中にNULLの項目があるとQlik Senseが認識しています。この場合は、IsNull関数を用いて、対象項目のNULLを任意の値に置き換えます。
---------------------------------------------------------------------------------
■IsNull関数
IsNull関数とは、Nullかどうかを判定する関数です

  IsNull(項目名)

例)「部署名」がNullの場合は「新設部署」という文字列に置き換えます

  If(IsNull(部署名),'新設部署',部署名)
---------------------------------------------------------------------------------

今回はパターン3の例で、NULLが表示されていた棒チャートの[データ]タブ「部署名」の [項目]に、上記数式を入力します。

すると、チャート上の「-」が「新設部署」という別の値に置き換わっていること、またチャート上の棒が選択できるようになっていることが確認できます。

さいごに

・NULLとは、レコードに値が無いことを表す
・Qlik SenseではNULLを「可視化」できるのでデータが無いことを知ることができる
・ただし、NULLを選択するには、NULLを別の値に置き換える必要がある
・NULLが生じるパターンは大きく3つあり、それぞれで置き換える方法が異なる

NULLについてご理解いただけましたでしょうか?
Qlik SenseにはNULLのデータも可視化できるという強みがありますが、
NULLを別の値に置き換えることで、さらにNULLを選択することも可能になります。
データを取り込んだ後、チャート内に「-」を見つけた際は、ぜひ上記方法で値を置き換え、選択し、NULLデータの探索をしてみてください。
NULLになっている原因や、集計結果が合わない原因などが見つかるかもしれません。

関連している記事

  • データ準備
2021.07.29

Date#とDateの違い

皆さんはデータを分析する時、必ずと言っていいほど日付データを扱われると思います。 その際に取り込んだ日付データが日付として扱えなかったことはありませんか?

  • データ準備
2021.06.30

Where句で必要なデータだけ取り込みます!

アプリに全てのデータを取り込む必要はないな…という時ありませんか? そんな時はWhere句で条件を指定して必要なデータだけ取り込みましょう!

  • データ準備
2021.06.15

Concatenate(連結)で分析しやすいデータに加工する!

JOINに引き続き、データ準備のテクニックをご紹介します。 今回はJOINと同じように複数テーブルを1つにまとめ、 分析しやすいデータに加工できる「Concatenate」(連結)についてです。

ページの先頭へ戻る