本章では、初級コマンドで用いた1996年1月のデータを用いて、下図に示すような「顧客別平均来店間隔日数」の帳票を作成する。
顧客別平均来店間隔日数チュートリアル初級帳票編
: |
来店間隔とは、ある顧客がある日に来店したとき、次回の来店までの間の日数のことである。そして、顧客ごとに求まる複数の来店間隔の平均を計算した値が、平均来店間隔日数である。
上図の帳票を作成するにあたり、これまでに学習したコマンド以外に必要となるコマンドは、「ある項目の値を一行上にずらす」コマンドである。
まずは、次に示す回答見ずに、各自で、入力データから、上図の帳票を作成するために、コマンドをどのように組み合わせて実行すればよいか(処理の流れ)を考えてもらいたい。
回答:処理の流れ
次に、上記の「処理の流れ」における4の処理について解説する。
xtslide は、-kで指定した項目を単位に、-fで指定した項目の値を一行上にずらし、新しい項目を生成する。例えば、下図の左に示すような顧客と日付項目からなるデータがあったとする。このデータに対して「xtslide -k 顧客 -f 日付 -a 次回来店日」を実行すると、新しい項目「次回来店日」が図の中央のように生成される。顧客Aの二行目、顧客Bの三行目がNULL値になっているのは、ずらす行がないためである。そしてxtslideでは、NULL値となるこれらの行は削除され、図の右に示すような結果が得られる。NULL値行を削除したくなければ"-n"パラメータを付ければよい。
以上の説明で、顧客別来店回数を求めるスクリプトを書く準備が整った。以下にその回答を示すが、回答を見る前に各自でチャレンジしてもらいたい。
#/bin/bash #=============================================================== # MUSASHI bash script #=============================================================== #---- タイトル title="顧客別平均来店間隔日数" #---- コメント comment="チュートリアル初級帳票編" #---- 各種変数(適宜修正すること) inPath="/mnt/h00/prm/tutorial" #--------------------------------------------------------------- # コマンド #--------------------------------------------------------------- xtdelnul -f 顧客 -i $inPath/dat.xt.gz | xtcut -f 顧客,日付 | xtuniq -k 顧客,日付 | xtsort -k 顧客,日付 | xtslide -k 顧客 -f 日付:次回来店日 | xtcal -c 'day($次回来店日,$日付)' -a 来店間隔日数 | xtagg -k 顧客 -f 来店間隔日数:平均来店間隔日数 -c avg | xtcut -f 顧客,平均来店間隔日数 | xtheader -l "$title" -c "$comment" -o cusint.xt #=============================================================== |
実行結果は各自で確認してもらいたい。