初級帳票編 ある商品と同時購入された商品売上ベスト

本章では、初級コマンドで用いた1996年1月のデータを用いて、下図に示すような「ベビー紙おむつと同時購入された商品売上ベスト20」の帳票を作成する。

出力結果

「ベビー紙おむつ」と同時購入された商品売上ベスト20

チュートリアル初級シナリオ編

順位 効能4 効能4名 購入件数
1 2410 紙類 41
2 2626 ミルク類 28
3 2628 ベビーフード類 26
4 2414 衣料用洗剤 24
5 2416 仕上剤 22
6 2428 シャンプー&リンス 21
7 2418 台所用洗剤 19
8 2420 住居用洗剤 17
9 2422 ハミガキ 14
10 2460 ナプキン 14
11 2430 ヘアケア商品 11
12 2436 入浴用品 11
13 2424 ハブラシ 9
14 2434 石鹸 9
15 2438 消臭剤 9
16 2442 芳香剤 9
17 2511 基礎化粧品 8
18 2620 授乳・離乳用品 8
19 1114 ドリンクアンプル剤 7
20 2222 清浄綿 7

帳票に関するコメント

この帳票は、前章の「商品売上数量ベスト20」に非常に似ており、スクリプトも多くの部分が同じになる。大きく異なる点は、商品の同時購入を考慮に入れている点である。
 商品の同時購入について考える場合、以下の4つの点を決める必要がある。

  1. 「同時」の定義
  2. 対象商品の決定
  3. 同時購入対象商品の決定
  4. 同時購入件数の単位の決定

 まず「同時」の定義であるが、通常、「一枚のレシートの中で購入された商品」は同時購入されたと定義される。しかしながら、目的によっては、同一顧客が同じ週の中で購入した商品は全て同時購入したと定義するケースもある。また「同時」という言葉はふさわしくなくなってくるが、月や年を単位とするケースもあるであろう。本章ではレシートを単位とする。
 次に、どの商品についての同時購入を調べたいかを決定する。もし対象商品が決まっておらず、同時購入率の高い商品の組合せを求めたければ、その時は「マーケットバスケット分析」をおこなう必要がある。対象商品の決定で重要となることは、何をもって商品とするかについてである。最小単位としての商品を用いると、例えば同じ商品であっても色が異なると違う商品と識別されてしまうかもしれない。これは目的によって決定することであるが、通常、商品以外に、商品分類(効能)やブランド、メーカーなどが用いられる。本章では効能4でのベビー紙おむつ(2610)を対象商品とする。
 同時購入対象商品の決定とは、対象商品と同時購入された商品をどの単位(商品、分類、ブランド、メーカ)で見るかということである。対象商品と単位が異なるケースも十分考えられる。例えば、「あるブランドが同時購入される商品分類にはどのようなものが多いか」を知ることは、そのブランドのイメージを知るために役立つかもしれない。本章では対象商品と同様に効能4を用いることにする。
 最後に、同時購入件数の単位についてであるが、通常は「件数」もしくは「数量」が用いられる。件数では、レシートの中で同じ商品を複数個購入していたとしても、同時購入としては一件と見なす。一方、数量では、レシートの中で例えばある商品を5個購入していれば、同時購入数量を5とカウントする。これらは目的によって使い分ければよい。本章では「件数」で同時購入数をカウントすることにする。

処理の流れ

上図の帳票を作成するにあたり、初級コマンド編で学習したコマンド以外に必要となるコマンドは、特にないが、xtselstrを使い「対象商品を含むレシートを全て選択する」処理を行う。xtselstrの章で少し触れたが、キー項目(ここではレシート番号)を指定することによって、キー項目単位での選択が可能となる。
以下に、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を示すが、回答を見る前に各自で考えてもらいたい。

回答:処理の流れ

  1. ベビーオムツ(効能4=2160)が含まれるレシートを全て選択する
  2. ベビーオムツの行を削除する
  3. 複数購入商品(効能4)を単一化する
  4. 必要な項目「効能4」を選ぶ
  5. 効能4別の件数をカウントし、「購入件数」とする
  6. 効能4名の結合、ベスト20の選択、順位づけ

スクリプト

以上の説明で、「ベビー紙おむつと同時購入された商品売上ベスト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
#===============================================================

実行結果については、各自で確認してもらいたい。

練習課題