Qlik Senseでマスタと明細データの不一致をチェックする_Null値の特定
更新日:2024年6月22日
データ分析でよくあるのが、キーが合致しないデータの存在です。明細データとマスタデータで発生することが多いですが、それ以外での発生も含めて正しい集計ができず結構困ります。Qlik Senseは連想技術で簡単に合致しないデータを特定してデータ整備につなげることができます。
※2023年11月時点のQlik Sense Businessを利用しています。
<複数テーブル間で起こるキーの不一致>
下図では「データA」と「データB」があり、商品名と価格データが管理されています。それぞれのデータは「商品ID」がキーとなって関連付けられます。

ただし、それぞれのデータにキーの不一致なレコードがあるので、このままでは正しい分析ができません。双方を突き合わせて統合する際に、インナージョインすると本来存在しているレコードが見えなくなってしまいます。
通常の突き合わせ(インナージョイン) | 不一致の確認(アウタージョイン) |
![]() | ![]() |
アウタージョインすることで不一致の状況が確認できますが、データ量が多くなってくると不一致を確認するのが困難になってきます。下図のように不一致レコードのみを特定することができれば元データの修正もはかどります。

<Qlik Senseで不一致を可視化する>
Qlik Senseは上記のような不一致が発生する場合、アウタージョインでシート上に表示してくれるので不一致の可視化にはとても便利です。例えば商品ごとの価格集計をした際に、Qlik Senseシート上では下記のように表示されます。商品名のデータがない値は「-」でチャート上はグレーで表示してくれます。同様に価格データのない「もも」は0として表示されてます。

このように、不一致の可視化は簡単にできます。ただ、可視化した不一致レコードを特定しようとすると、もうひと工夫が必要です。不一致として可視化されたグレーの部分はデータの実体がないため、Qlik Senseといえども画面上では選択して絞り込むことができません。
<Qlik Senseシート上で不一致データを特定する>
そこで、手っ取り早い方法として次のようなかたちでやってみたところ不一致のあるレコードを絞り込むことができました。おそらくいろいろなやり方はあるように思いますが、一つの例として挙げておきます。
▼実現イメージ
「欠落フラグ」にて欠落しているレコードにフラグを立てます。「A1」は商品(もも)だけ、「B3」は価格(60)だけなので、それぞれ「商品」「価格」と文字列フラグを作りました。

やり方としては「商品」と「価格」を「_」をはさんで連結します。それが「商品&'_'&価格」列です。数式はそのままです。
=商品&'_'&価格
そうすると、商品しかない場合は最終文字が「_」となり、価格しかない場合は先頭文字が「_」となります。これをさらにIf文で判定して欠落フラグにします。
=If(left(商品&'_'&価格,1)='_','価格',
If(right(商品&'_'&価格,1)='_','商品'))
Left関数で先頭1文字を取得して「_」だったら「価格」と返します。 Right関数で最終1文字を取得して「_」だったら「商品」と返します。
こうすることで、連結文字列および判定結果が実データとして存在することになるので、Qlik Senseシート上で選択できるようになります。

以上です
Comments