QlikViewでデータ分析をする際の「重複する値を取り除くにはどうすればよいか?」
目次
この記事は、BIツール導入支援及びDWH構築支援を15年以上続けてきたINSIGHT LABの中の人が書いています。
1.Qlikのロードスクリプトで重複する値を取り除く機能Distinctとは
例えばこのようなデータを見てみましょう。
上はとある学校祭の予定ですが、場所や催し物にいくつか重複がありますね。
QlikViewを使い、重複する値を取り除いてみましょう。
サンプルデータはこちらからダウンロードできます。
データの準備
新規アプリを作成し、ロードスクリプト編集画面から「テーブル ファイル..」をクリックします。
ファイルを選択し、「開く」をクリックします。
2.Qlikのデータ ロード エディタでDistinctを使う方法
Distinctは、「データロードエディタ」で使う方法と「シート内の数式」で使う2種類の方法があります。まずは、データロードエディタで使う方法をご説明します。
単一項目のテーブルを読み込む際のDistinct
まず、読み込む項目が1つだけのLOAD文を作ってみましょう。
データのプレビューで「催し物」のみ選択して「終了」をクリックします。
生成されたスクリプトの画像の位置にDistinctを追加します。
Distinctは重複しているデータをそれぞれ1回のみ読み込みするようにする指定です。
今回のサンプルデータでは取り込みが以下のように行われます。
重複している行は1回だけ読み込まれるため、テーブル ビューワで確認するとDistinctをつけてロードした場合はとDistinctをつけない場合と比べて件数が異なっていることがわかります。
複数項目のテーブルを読み込む際のDistinct
では、複数の項目を読み込むLOAD文ではどうなるかを見てみましょう。
先ほどのLOAD文を次のように修正します。
データ ロード エディタでLOADに続くDistinctは読み込まれる項目全体が重複しているかをチェックするため、一部分のみが重複する行は省かれずに読み込みが行われます。
データ ロード エディタで使われるDistinctの解説は以上です。
続いて、シートで使われるDistinctの説明をします。
3.Qlikのシートの数式で使うDistinctの使い方
ここからは、シート上の数式で使われるDistinctについて解説します。
単一項目のDistinct
前回の記事でデータの読み込みを行ったアプリで「テーブル」を作成し、軸に「年月日」「場所」「催し物」を追加します。
メジャーを2つ追加します。
- メジャー① …… ラベルは「のべ催し物数」、数式は「Count(催し物)」
- メジャー② …… ラベルは「催し物数(重複なし)」、数式は「Count(Distinct 催し物)」
数式中のDistinctによって重複している値は一度しかカウントされずに集計されます。
結果は以下のようになります。
重複をカウントするかどうかで集計結果が異なっていますね。
複数項目のDistinct
ここまでの解説では「催し物に被っているものがあるかどうか」に注目していましたが、今度は「年月日・場所・催し物すべてが同じ行があるか」の数式を組み立てます。
テーブルにメジャーを追加します。
- メジャー③ …… ラベルは「年月日・場所・催し物数」、数式は「Count(年月日 & 場所 & 催し物)」
集計を実行すると結果は以下のようになります。
メジャー③では年月日・場所・催し物がすべて重複するかどうかをチェックするため、集計結果はメジャー①の重複チェックを行わないものと同じになりました。
この記事は、以上です。
Qlikで使えるloadscript(ロードスクリプト)一覧はこちら