Lesson 9 年齢計算

 分析を顧客に絞って行なっていくことになった場合、顧客の細かいデータが必要になってくる。その顧客のデータを知ることにより、さらに細かい分析が可能になる。ここでは顧客の少ないデータを生かし、新たなデータを作り出すために販売年月日と顧客の生年月日から顧客の年齢を出していく。

1. 顧客のデータを引き出す(gunzip,mcut,mdelnul)

 顧客のデータとして必要なのが顧客コード、数量、金額、販売年月日、生年月日が必要なので出してくる。あと、顧客コードのnull値を消しておく。(Lesson8  1.必要なデータの選択 参照) 尚、ここでも生年月日はmjoinを使って出していく。
 
gunzip -c /home/practice/Mine/Data/StoreMaster1/Dat/dat,gz   |\ 
mcut field=8,14,13,2                                                                  |\ 
mdelnul field=1                                                                          |\
sort                                                                                         |\ 
mjoin key=1 master=/home/practice/Mine/Data/Birthday/Dat/dat field=2 >xxa
 xxaの内容を確認すれば、“*”が省かれた「顧客コード」「数量」「金額」「販売年月日」「生年月日」が確認できるだろう。

2. 顧客の年齢を出す(mage

 顧客の年齢を出すのだが、Lesson8でふれていた日付(販売年月日)必要な理由を説明しよう。mageはfield1を現在の日付、field2を顧客の誕生日として計算して年齢を計算しその値を新しい項目として付加する。例えば1998年8月31日の商品Aの購入顧客の年齢を出したいとする。顧客の年齢をだす時点は、その商品Aを購入した時になる。この場合、年齢計算する時点は1998年8月31日になる。そして顧客の誕生日19xx年yy月zz日を使い年齢を出す事になる。入力データを上記のxxaを使い、顧客の年齢をだしてみる。
 
mage field1=4 field2=5                   <xxa      >xxb
xxbの内容を確認すれば顧客の年齢がでていることが解るだろう。

3. 顧客の年代を出す(mage5,mage10)

 次に、顧客の年代をだすにはmage5,mage10を使う事になる。mage5,mage10は上記のmageの変化系でmageは年齢を出していたが、mage5は5歳刻み年代、mage10は10歳刻み年代を新しい項目として付加する。5歳刻み年代とは年齢の下一行が0から4であれば0とし、5から9であれば5とする年代である。10歳刻み年代は年齢の下一桁を切り捨てた年齢のことである。例えば36歳の人は5歳刻み年代であれば35歳に、10歳刻み年代であれば30歳ということになる。さて、ここでは顧客の5歳刻みの年代を出す為mage5を使う。入力データは上記のxxaを使用する。
 
mage5 field1=2 field2=3   <xxa        |\
mcut field=1,4                              >xxc
 xxcの内容を確認しておこう。顧客の年齢が上記のmageのときの数値ではなく、5区切りの数値になっているのが確認できるだろう。ここでは顧客の年代を見たいだけなので、あえて顧客コードと年代だけ取り出した。
 

4. 年代別で金額数量を集計する

 さて、Lesson8の冒頭で説明した『年代別で金額数量を集計する』をやっていこう。まずは、顧客別の数量、金額、販売年月日、生年月日、年代をだす。顧客別の数量、金額、販売年月日、生年月日はここでは上記のxxaのファイル使う。年代は10歳刻み年代で出していく。それを考慮したバッチは以下のとうりである。
 
mage10 field1=4 field2=5  < xxa >xxd 
 xxdの内容を確認し、上記のとうりできていたら、次は年代別で金額数量を集計していこう。xxdのファイルは顧客コード、数量、金額、販売年月日、生年月日、年代としてできているので必要な項目を切り取り、年代別で集計する。そのバッチは次のとうりである。
 

mcut field=6,2,3                            < xxd  |\
sort                                                       |\
msum key=1 field=2,3                               >xxe
 xxeの内容を確認しておこう。年代別(10,20,30・・・)ごとに数量、金額が集計されているのが確認できるだろう。上記の2つのバッチを1つにすると・・・
 

mage10 field1=4 field2=5  < xxa                |\
mcut field=6,2,3                                      |\
sort                                                       |\
msum key=1 field=2,3                               >dat9-1
 となる。