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