Qlik Trainingブログ

  • QlikView
  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • データロード
2013.07.16

重複するデータを削除して一意にする

以前、年や月ごとに分かれたExcelファイルをまとめて取り込む方法をご紹介しましたが、このような場合にデータをそのまま取り込むと、重複するデータが取り込まれてしまう場合があります。
QlikViewではLOAD文に「Distinct」というキーワードをつけるだけで、重複データを削除して一意のデータを取り込むことができます。
基本的な機能なのですが、いままできちんと取り上げる機会がなかったので、あらためてここで紹介いたします。

QlikViewを使わずに、Excelで重複データを削除する手順も掲載しました。もし単純にExcelでの手順を知りたい方はこちらをご覧ください。Excelで重複データを削除する方法

ただしExcelでできるのはあくまで一シート内での重複の削除です。QlikViewでは複数のファイルやシートをまとめた上で、重複を削除できます。
たとえば、2012年の顧客リストと2013年の顧客リストがあったときに、これらをまとめた上で重複を省いた綺麗な顧客一覧を作成できます。

ファイルのダウンロード

ここでは以下のファイルを使用しますので、ダウンロードしてください。
distinct-load.zip
Zip形式ですので、ダウンロード後解凍してください。
以下ファイルが含まれています。

今回は重複データの削除を試すだけですので、テキストファイルを使用します。

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

それぞれ、2012年の顧客リストと2013年の顧客リストですので、当然のことながらどちらかにしか無いデータがあります。
また各ファイル内に重複したデータがあり、さらに二つのファイル間で重複したデータもあります。
データの件数は「2012年顧客リスト.txt」が30件、「2013年顧客リスト.txt」が35件です。合計65件のデータですが、重複を省くとちょうど50件(50社)のデータです。

このバラバラの顧客リストを一つにまとめ、さらに重複を省いた綺麗な顧客一覧を作成してみましょう。

データの取り込み

それではデータを取り込んでみましょう。
まずはファイルを新規に作成し、[ロードスクリプトの編集]画面を起動します。

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

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

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

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

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

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

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

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

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

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

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

しかし、統計ボックスでレコード数を見ると65件と表示されており、このままでは顧客が65社あるように感じてしまいます。(実際は50社)
さらに、余分なデータがあるとその分ファイルサイズも大きくなり、メモリも多く消費しますので、重複データは削除しておいた方がよいでしょう。

重複データの削除(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 2007以降
[データ]タブの[データツール]にある[重複の削除]ボタンをクリックします。

重複しない値を抽出する、または重複する値を削除する

振り返り

重複するデータを削除して一意のデータを取り込むには、LOAD文のうしろに「Distinct」と追加します。

LOAD Distinct ...

最後に…

今回は重複するデータを削除する方法をご紹介しました。
これは、とくに商品や顧客などのマスターデータを整備するときに便利な機能です。
非常に簡単な機能ですが、よく使用しますのでぜひ覚えておいてください。

実はもともと「ANDモード」という機能に関する記事を書こうと思っていたのですが、「ANDモード」を使うには「Distinct」の理解が必須だったため、先に「Distinct」の方を紹介いたしました。
「ANDモード」についても、近いうちにこのブログで紹介いたしますのでご期待ください。

お疲れ様でした。

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.24

Qlik Cloud 日本リージョンへの移行方法(qlik-cli利用時の注意点)

先日、本ブログにて、日本リージョンへテナントを移行する方法の全体像をご紹介しました。今回は、コマンドラインのqlik-cliを用いたテナント移行時の注意点と、コマンドやスクリプトの記述例をご紹介します。

  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • 運用者
2024.04.17

Qlik Application Automation活用術:Microsoft Teamsにメッセージを配信する

Qlik Sense SaaSを使用していて、メジャーの結果と事前に設定した閾値を比較して、閾値を超えたら通知を飛ばせたら良いな、と考えたことはありませんか?本記事では、Qlik Sense SaaSの「Qlik Application Automation」でMicrosoft Teamsにメッセージを配信する方法を紹介します。

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.01

Qlik Cloud 日本リージョンへの移行方法

2024 年 3 月 26 日に QlikTech 社より Qlik Cloud の日本リージョン開設の ニュースリリースが発表されました。本ブログではすでに Qlik Cloud(Qlik Sense Enterprise SaaS) をご利用中のユーザー様に向けて、日本リージョンへテナントを移行する方法をご紹介します。

ページの先頭へ戻る