【QlikView】複数のテーブルやファイルからデータを取り込む時の便利技

QlikViewは、複数のテーブルやファイルからデータを取り込んでも、

カラム名を同じにすれば、自動で関連付けてくれます。

さらに、LEFT JOINを使うと、一方の表を優先してデータを取り込むことができます。

「一方の表を優先してデータを取り込む」とは、

たとえば、売上表に会員番号をもとに顧客表の氏名を結合する場合などです。

売上表に会員番号が無い顧客の名前は取り込みません。

 

売上表:

商品名

会員no

リンゴ

001

バナナ

002

みかん

003

 

顧客表:

会員番号

氏名

001

山田

002

鈴木

003

佐藤

004

山下

 

上のようなテーブルがあったとして、LEFT JOINを使わない場合、ロードスクリプトは以下のように書きます。

CSVファイルを使う人は、SQL SELECT~;のところをLOAD ~に置き換えて考えてください。

 

売上表:

SQL

SELECT

商品名,

会員no AS 会員番号

FROM売上表;

 

顧客表:

SQL

SELECT

会員番号,

氏名

FROM顧客表;

 

データは以下のようになっています。

商品名

会員番号

氏名

リンゴ

001

山田

バナナ

002

鈴木

みかん

003

佐藤

-

004

山下

 

何にも購入していない004山下さんが、データに入っています。

購入した人の詳しいデータが知りたかっただけなら、

004山下さんは、この場合邪魔なデータになってしまいます。

 

ちなみに、システムテーブルで見ると、こうなっています。

$Field

売上表

顧客表

会員番号

会員番号

会員番号

商品名

商品名

-

氏名

-

氏名

 

 

そこで、LEFT JOIN を使います。

前のテーブルとデータを結合し、

結合できないデータ(この場合、購入履歴に番号が無い004山下さん)は、

取り込まずに、捨ててしまいます。

 

売上表:

SQL

SELECT

商品名,

会員no AS 会員番号

FROM売上表;

 

LEFT JOIN (売上表)

SQL

SELECT

会員番号,

氏名

FROM顧客表;

 

商品名

会員番号

氏名

リンゴ

001

山田

バナナ

002

鈴木

みかん

003

佐藤

 

システムテーブルで見ると、こうなっています。

$Field

売上表

会員番号

会員番号

商品番号

商品番号

氏名

氏名

 

ちなみに、売上表のほうのデータは消えません。

売上表の会員番号が、未記入だったり、ありえない番号でも、売上表のほうのデータは減らずに、

氏名のところは空欄でデータが保存されます。

商品名

会員番号

氏名

リンゴ

001

山田

バナナ

002

鈴木

みかん

003

佐藤

もも

005

<![if !supportLists]>-       <![endif]> ()

 

これでデータが減るので、QlikViewが軽くなるかも!