1対Nのクロス集計を行う。 s=を指定した場合には項目の値が項目名となるように横に展開され、 f=で指定した項目がセルとして出力される。 a=を指定した場合(2項目指定)には 指定した値が項目名となり、 1項目にf=で指定した項目名が、 2項目にf=で指定した項目値がそれぞれ縦展開される k=が指定されていた場合には、 指定した値が行idとなり、id単位で展開される。
m2cross f= s=|a= [k=] [v=] [i=] [o=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
f= ここで指定された項目の値がセルの値として出力される。 a=を使用するときのみ複数項目指定可。 s= 列項目名に展開する項目を指定する。 ここで指定された項目の値が項目名として出力される。 a= 2項目指定する。 1項目目にf=で指定した項目名がデータとして展開される項目名を指定する。 2項目目にf=で指定した項目値の項目名を指定する k= キー項目名リスト ここで指定した項目を単位に展開をおこなう。 v= NULL値置換文字列 NULL値があった場合、v=パラメータで指定する置換文字列により、項目の値を置換する。
item項目を単位にdate項目を横に展開し、 quantity項目を出力する。
$ more dat1.csv item,date,quantity A,20081201,1 A,20081202,2 A,20081203,3 B,20081201,4 B,20081203,5 $ m2cross k=item f=quantity s=date i=dat1.csv o=rsl1.csv #END# kg2cross f=quantity i=dat1.csv k=item o=rsl1.csv s=date $ more rsl1.csv item%0,20081201,20081202,20081203 A,1,2,3 B,4,,5
例1の出力結果を元に戻すには、同じくm2crossを以下のよう用いればよい。
$ more rsl1.csv item%0,20081201,20081202,20081203 A,1,2,3 B,4,,5 $ m2cross f=2008* a=date,quantity i=rsl1.csv o=rsl2.csv #END# kg2cross a=date,quantity f=2008* i=rsl1.csv o=rsl2.csv $ more rsl2.csv item%0,date,quantity A,20081201,1 A,20081202,2 A,20081203,3 B,20081201,4 B,20081202, B,20081203,5
横に展開する項目名の並びを逆順にする。
$ m2cross k=item f=quantity s=date%r i=dat1.csv o=rsl4.csv #END# kg2cross f=quantity i=dat1.csv k=item o=rsl4.csv s=date%r $ more rsl4.csv item%0,20081203,20081202,20081201 A,3,2,1 B,5,,4
mcross : イメージは同じだが、mcrossはN対Nクロス集計として出力する。