本章では、初級コマンドで用いた2002年のデータを用いて、下図に示すような「調味料と同時購入された小分類商品売上ベスト20」の帳票を作成する。
ある小分類商品(1101:調味料)と同時購入された小分類商品売上数量ベスト20チュートリアル
|
この帳票は、前章の「細分類商品売上数量ベスト20」に非常に似ており、スクリプトも多くの部分が同じになる。大きく異なる点は、商品の同時購入を考慮に入れている点である。
商品の同時購入について考える場合、以下の4つの点を決める必要がある。
まず「同時」の定義であるが、通常、「一枚のレシートの中で購入された商品」は同時購入されたと定義される。しかしながら、目的によっては、同一顧客が同じ週の中で購入した商品は全て同時購入したと定義するケースもある。また「同時」という言葉はふさわしくなくなるが、月や年を単位とするケースもあるであろう。本章ではレシートを単位とする。
次に、どの商品についての同時購入を調べたいかを決定する。もし対象商品が決まっておらず、同時購入率の高い商品の組合せを求めたければ、その時は「マーケットバスケット分析」をおこなう必要がある。対象商品の決定で重要となることは、何をもって商品とするかについてである。最小単位としての商品を用いると、例えば同じ商品であっても色が異なると違う商品と識別されてしまうかもしれない。これは目的によって決定することであるが、通常、商品以外に、商品分類やブランド、メーカーなどが用いられる。本章では小分類での「調味料」(1101)を対象商品とする。
同時購入対象商品の決定とは、対象商品と同時購入された商品をどの単位(商品、分類、ブランド、メーカ)で見るかということである。対象商品と単位が異なるケースも十分考えられる。例えば、「あるブランドが同時購入される商品分類にはどのようなものが多いか」を知ることは、そのブランドのイメージを知るために役立つかもしれない。本章では対象商品と同様に小分類を用いることにする。
最後に、同時購入件数の単位についてであるが、通常は「件数」もしくは「数量」が用いられる。件数では、レシートの中で同じ商品を複数個購入していたとしても、同時購入としては一件と見なす。一方、数量では、レシートの中で例えばある商品を5個購入していれば、同時購入数量を5とカウントする。これらは目的によって使い分ければよい。本章では「件数」で同時購入数をカウントすることにする。
上図の帳票を作成するにあたり、初級コマンド編で学習したコマンド以外に必要となるコマンドは、特にないが、xtselstrの特殊な機能を使い「対象商品を含むレシートを全て選択する」処理を行う。xtselstrの章で少し触れたが、キー項目(ここではレシート番号)を指定することによって、キー項目単位での選択が可能となる。
以下に、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を示すが、回答を見る前に各自で考えてもらいたい。
回答:処理の流れ
以上の説明で、「調味料と同時購入された小分類商品売上数量ベスト20」を求めるスクリプトを書く準備が整った。以下にその回答を示すが、回答を見る前に各自でチャレンジしてもらいたい。
#!/bin/bash xtselstr -k 日付,レシート -f 小分類 -v 1101 -i /mnt/h00/tutorial/dat.xt | xtselstr -f 小分類 -v 1101 -r | xtuniq -k 日付,レシート,小分類 | xtcut -f 小分類 | xtjoin -k 小分類 -m /mnt/h00/tutorial/jicfs4.xt -f 小分類名 | xtbest -s 数量%nr -R 1_20 | xtnumber -a 順位 | xtcut -f 順位,小分類,小分類名,数量 | xtheader -l "ある小分類商品(1101:調味料)と同時購入された小分類商品売上数量ベスト 20" -c "チュートリアル" -o basket.xt xt2html -i basket.xt -o basket.html |
実行結果については、各自で確認してもらいたい。
次のようなデータを作成しよう。スクリプト名及び結果ファイル名は表に示されたものを使おう。
帳票名 | スクリプト名 | 結果ファイル(xt) | 結果ファイル(html) |
本章の例で、同時購入対象商品を細分類に変更した帳票 | basket1.sh | basket1.xt | basket1.html |
本章の例で、同時購入対象商品を加工食品(中分類が11)に限定した帳票 | basket2.sh | basket2.xt | basket2.html |
スポーツドリンク(細分類が140323))と同時購入された細分類商品購入件数ベスト20(各種定義は本章の例に従う) | basket3.sh | basket3.xt | basket3.html |