
重複するデータを削除して一意にする
以前、年や月ごとに分かれたExcelファイルをまとめて取り込む方法をご紹介しましたが、このような場合にデータをそのまま取り込むと、重複するデータが取り込まれてしまう場合があります。
QlikViewではLOAD文に「Distinct」というキーワードをつけるだけで、重複データを削除して一意のデータを取り込むことができます。
基本的な機能なのですが、いままできちんと取り上げる機会がなかったので、あらためてここで紹介いたします。
QlikViewを使わずに、Excelで重複データを削除する手順も掲載しました。もし単純にExcelでの手順を知りたい方はこちらをご覧ください。Excelで重複データを削除する方法
ただしExcelでできるのはあくまで一シート内での重複の削除です。QlikViewでは複数のファイルやシートをまとめた上で、重複を削除できます。
たとえば、2012年の顧客リストと2013年の顧客リストがあったときに、これらをまとめた上で重複を省いた綺麗な顧客一覧を作成できます。
ファイルのダウンロード
ここでは以下のファイルを使用しますので、ダウンロードしてください。distinct-load.zip
Zip形式ですので、ダウンロード後解凍してください。
以下ファイルが含まれています。

各ファイルの内容は以下のとおりです。

また各ファイル内に重複したデータがあり、さらに二つのファイル間で重複したデータもあります。
データの件数は「2012年顧客リスト.txt」が30件、「2013年顧客リスト.txt」が35件です。合計65件のデータですが、重複を省くとちょうど50件(50社)のデータです。
このバラバラの顧客リストを一つにまとめ、さらに重複を省いた綺麗な顧客一覧を作成してみましょう。
データの取り込み
それではデータを取り込んでみましょう。まずはファイルを新規に作成し、[ロードスクリプトの編集]画面を起動します。

ロードスクリプトの最下行にカーソルをあわせて、[テーブルファイル]ボタンをクリックします。

「2012年顧客リスト.txt」と「2013年顧客リスト.txt」を両方選択します。
キーボードのShiftキーや、Ctrlキーを押しながら二つのファイルを選択して[開く]ボタンをクリックしてください。

ファイルウィザードが起動します。
[列見出し]を[先頭行]に変更し、[終了]ボタンをクリックします。

今回はファイルを二つ選択しているため、つづけてファイルウィザードが起動します。
さきほどとおなじように[列見出し]を[先頭行]に変更し、[終了]ボタンをクリックします。

ロードスクリプトが作成されました。
ひとまずここまででデータを取り込んでみましょう。
[OK]ボタンをクリックします。

データを取り込んでみましょう。
[リロード]ボタンをクリックします。

ファイルを保存してください。


データが取り込まれました。
[閉じる]ボタンをクリックしてください。

テーブルビューアーで、取り込まれたデータの件数を確認してみましょう。
[テーブルビューアー]ボタンをクリックします。

テーブル名の部分にマウスカーソルをあわせると、データの件数を確認できます。
65件のデータが取り込まれています。

なお、リストボックスやテーブルボックスは重複するデータを省いて表示するため、このままでも(データが重複したままでも)利用する上で不便を感じないこともあります。

さらに、余分なデータがあるとその分ファイルサイズも大きくなり、メモリも多く消費しますので、重複データは削除しておいた方がよいでしょう。
重複データの削除(Distinct)
それでは重複データを削除してみましょう。[ロードスクリプトの編集]画面を起動します。
LOAD文に「Distinct」の指定を追加します。
変更前
LOAD 得意先名 FROM : LOAD 得意先名 FROM :変更後
LOAD Distinct 得意先名 FROM : LOAD Distinct 得意先名 FROM :

再度リロードを実行してください。

テーブルビューアーを確認すると、データの件数が50件になっていることが確認できます。

リストボックスやテーブルボックスの表示は、データが重複していても、していなくても変わりませんが、内部的には重複データが削除され綺麗な状態になっています。
また、統計ボックスでレコード数を見ると50件となっており、顧客が50社あることも分かります。

以上で今回のチュートリアルは終了です。
補足説明
項目が二つ以上ある場合
前述のサンプルデータは項目が一つだけでしたが、項目が二つ以上あるときは、全項目の値が一致しているものが重複データとみなされます。たとえば、姓と名の項目があったとき、以下の三件のデータはすべて異なるデータ(重複していないデータ)とみなされます。
姓 名 田中 一郎 山田 一郎 田中 二郎
一意の件数を数える方法
重複データの話とはまた別の話になりますが、値を集計するとき一意の件数を数えたい場合があります。たとえば、おなじ商品名は一件とみなして商品が何種類あるのか数えたり、おなじ会社名は一件とみなして顧客が何社あるのか数えたりです。
一意の件数を数えるするには、数式に以下の指定をしてください。
Count(DISTINCT 項目名)この「DISTINCT」はCount関数などの集計関数の中で指定するものですので、「LOAD Distinct」とはまた別の機能です。
ただ、おなじ「DISTINCT」という指定ですので、あわせて覚えておくといいでしょう。
Excelで重複データを削除する方法
QlikViewを使わずに、Excelで重複データを削除する手順は以下のとおりです。ただしExcelでできるのは、あくまで一シート内での重複の削除であるという点に注意してください。複数のファイルやシートをまとめた上で、重複を削除する場合はQlikViewを使用した方が簡単です。
Excel 2003以前
[データ] メニュー→[フィルタ]→[フィルタオプションの設定]を選択します。[フィルタオプションの設定]画面で画面下部の[重複するレコードは無視する]にチェックを入れます。
Microsoft Office 2003のサポート終了にともない、ページが削除されたようです。(2014年12月15日追記)
Excel 2007以降
[データ]タブの[データツール]にある[重複の削除]ボタンをクリックします。ページが削除されているようなので、別の参照先を掲載しておきます。(2019年2月19日追記)
重複しない値を抽出する、または重複する値を削除する – Excel
https://support.office.com/ja-jp/article/重複しない値を抽出する、または重複する値を削除する-ccf664b0-81d6-449b-bbe1-8daaec1e83c2?ui=ja-JP&rs=ja-JP&ad=JP
振り返り
重複するデータを削除して一意のデータを取り込むには、LOAD文のうしろに「Distinct」と追加します。LOAD Distinct ...
最後に…
今回は重複するデータを削除する方法をご紹介しました。これは、とくに商品や顧客などのマスターデータを整備するときに便利な機能です。
非常に簡単な機能ですが、よく使用しますのでぜひ覚えておいてください。
実はもともと「ANDモード」という機能に関する記事を書こうと思っていたのですが、「ANDモード」を使うには「Distinct」の理解が必須だったため、先に「Distinct」の方を紹介いたしました。
「ANDモード」についても、近いうちにこのブログで紹介いたしますのでご期待ください。
お疲れ様でした。