本章では、初級コマンドで用いた1996年1月と2月のデータを用いて、下図に示すような「顧客の初回来店日、最終来店日、来店期間」の帳票を作成する。
顧客の初回来店日、最終来店日、来店期間チュートリアル初級シナリオ編
: : |
初回来店日とは、利用するデータにおいて、各顧客が最初に来店した日付のことで、最終来店日とは、利用するデータにおいて、各顧客が最後に来店した日付のことである。来店期間とは、初回来店日から最終来店日までの日数である。
たった2ヶ月のデータでは、これらの項目を求めることはないであろうが、もし4年間のデータで考えると、その4年の間に、多くの新しい顧客が登録されるであろうし、またある日を境にその店に全く来店しなくなるケースもあるであろう。そこで、初回来店日と最終来店日を求めることによって、どのくらいの顧客がどのような時に店に来店するようになり、またどのような時に店を去っていくかを知ることができる。さらに来店期間を求めることによって、初回来店日や最終来店日がいつかに限らず、その店に顧客として来店した期間の少ない顧客を知ることができる。
上図の帳票の作成においては、これまでに学習したコマンドを組み合わせることによって作成することができる。まずは、次に示す回答見ずに、各自で、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を考えてもらいたい。
回答:処理の流れ
このような少し複雑な帳票を考えるときは、たとえ処理の効率が下がろうとも、出力項目を一つづつ作成し、最後に結合するように考えるべきである。
上記の処理の流れをスクリプト化したものを以下に示しておくが、回答を見る前に各自でチャレンジしてもらいたい。
#/bin/bash #=============================================================== # MUSASHI bash script #=============================================================== #---- タイトル title="顧客の初回来店日、最終来店日、来店期間" #---- コメント comment="チュートリアル初級シナリオ編" #---- 各種変数(適宜修正すること) inPath="/mnt/h00/prm/tutorial" #--------------------------------------------------------------- # コマンド #--------------------------------------------------------------- #初回来店日を求める xtcat -i $inPath/'dat*.xt.gz' | xtdelnul -f 顧客 | xtcut -f 顧客,日付 | xtagg -k 顧客 -f 日付:初回来店日 -c min -o xxfirst #最終来店日を求める xtcat -i $inPath/'dat*.xt.gz' | xtdelnul -f 顧客 | xtcut -f 顧客,日付 | xtagg -k 顧客 -f 日付:最終来店日 -c max -o xxlast #初回来店日と最終来店日を結合し、来店期間を求める xtjoin -k 顧客 -m xxlast -f 最終来店日 -i xxfirst | xtcal -c 'day($最終来店日,$初回来店日)' -a 来店期間 | xtheader -l "$title" -c "$comment" -o custflvisit.xt #=============================================================== |
実行結果は各自で確認してもらいたい。