基本帳票編:顧客の初回来店日、最終来店日、来店期間

本章では、初級コマンドで用いた2002年のデータを用いて、下図に示すような「顧客の初回来店日、最終来店日、来店期間」の帳票を作成する。


出力結果

顧客の初回来店日、最終来店日、来店期間

チュートリアル

顧客 初回来店日 最終来店日 来店期間
A00001 20020826 20021221 117
A00002 20020112 20021225 347
A00003 20020727 20021008 73
A00004 20020214 20021016 244
A00005 20020918 20020923 5
A00006 20020606 20020918 104
A00007 20020208 20021229 324
A00008 20020101 20020424 113
A00009 20020304 20021215 286
A00010 20020402 20021219 261
A00011 20020609 20020609 0
A00012 20020131 20021202 305
A00014 20020215 20020830 196
A00015 20020629 20020927 90
A00016 20020629 20021217 171
A00017 20020107 20020923 259
A00018 20020302 20020903 185
A00019 20020115 20020910 238
A00020 20020512 20021221 223
                :
                :

処理の流れ

 初回来店日とは、利用するデータにおいて、各顧客が最初に来店した日付のことで、最終来店日とは、利用するデータにおいて、各顧客が最後に来店した日付のことである。来店期間とは、初回来店日から最終来店日までの日数である。
 1年間のデータであっても、その間に、多くの新しい顧客が登録されるであろうし、またある日を境にその店に全く来店しなくなるケースもあるであろう。そこで、初回来店日と最終来店日を求めることによって、どのくらいの顧客がどのような時に店に来店するようになり、またどのような時に店を去っていくかを知ることができる。さらに来店期間を求めることによって、初回来店日や最終来店日がいつかに限らず、その店に顧客として来店した期間の少ない顧客を知ることができる。
 上図の帳票の作成においては、これまでに学習したコマンドを組み合わせることによって作成することができる。まずは、次に示す回答見ずに、各自で、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を考えてもらいたい。

回答:処理の流れ

 このような少し複雑な帳票を考えるときは、たとえ処理の効率が下がろうとも、出力項目を一つづつ作成し、最後に結合するように考えるべきである。

スクリプト

上記の処理の流れをスクリプト化したものを以下に示しておくが、回答を見る前に各自でチャレンジしてもらいたい。

#!/bin/bash
xtcut    -f 顧客,日付 -i /mnt/h00/tutorial/dat.xt |
xtdelnul -f 顧客 |
xtagg    -k 顧客 -f 日付:初回来店日 -c min >xxfirst

xtcut    -f 顧客,日付 -i /mnt/h00/tutorial/dat.xt |
xtdelnul -f 顧客 |
xtagg    -k 顧客 -f 日付:最終来店日 -c max >xxlast

xtjoin   -k 顧客 -f 最終来店日 -m xxlast -i xxfirst |
xtcal    -c 'day($最終来店日,$初回来店日)' -a 来店期間 |
xtheader -l "顧客の初回来店日,最終来店日,来店期間" -c "チュートリアル" -o visitdate.xt

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

練習課題

次のようなデータを作成しよう。スクリプト名及び結果ファイル名は表に示されたものを使おう。

帳票名 スクリプト名 結果ファイル(xt) 結果ファイル(html)
初回来店年月別人数 visitdate1.sh visitdate1.xt visitdate1.html
最終来店年月別人数 visitdate2.sh visitdate2.xt visitdate2.html