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