簡単な例から始めよう。 MCMDをインストールしているのであれば、例に従ってコマンドラインに入力することで動作を確認してもらいたい。 まずはデータがなければ始まらない。 MCMDでは、多くの種類のデータセットを出力するためのmdataコマンドを備えている。 Figure 2.1にその利用例を示す。 $で始まる行はコマンドラインでの入力を表し、その下に実行結果が示されている。 mdataコマンドは、データセットの種類を引数にとり、標準出力に内容を出力する(詳細はmdataの章を参照)。 以下の例では、標準出力の内容をリダイレクトしてman0.csvという名前のファイルに出力している。
MCMDの全てのコマンドは、終了すれば#END#から始まるメッセージを出力する。 また、moreはファイルの内容をページ送りで表示するコマンドであり、データの内容を示すために利用している。 本マニュアルで用いる例は、全て以上の形式に従って記述されている。
$ mdata man0 >man0.csv #END# mdata man0 $ more man0.csv 顧客,金額 A,5200 B,4000 B,3500 A,2000 B,800
Figure 2.1で生成されたman0.csvデータを利用して、金額を顧客別に合計する例をFigure 2.2に示す。 入力データは、「顧客」と「金額」の2つの項目の5行から構成されるCSVデータである。 このデータをmsortfコマンドで顧客別に並べ変え、その結果は、パイプ("|")で連結されて 次のmsumコマンドへと送られる。 msumコマンドでは、顧客項目を集計キーにして、金額項目を合計し、 結果を出力ファイルoutput.csvに書き込んでいる。 Mコマンドは、その処理を終了するとメッセージを出力する。 正常終了すると#END#から始まるメッセージが出力され、 エラー終了すると#ERROR#から始まるメッセージが出力される。
$ msortf f=顧客 i=man0.csv | msum k=顧客 f=金額 o=output.csv #END# kgsortf f=顧客 i=man0.csv #END# kgsum f=金額 k=顧客 o=output.csv $ more output.csv 顧客%0,金額 A,7200 B,8300
もう少し複雑な例を示しておこう。 Figure 2.3に示された例では、顧客別にどのような商品を何個購入したか、マトリックス形式で集計する。 わかりやすさのために、各コマンドはパイプで接続せず、それぞれファイルに書きだし その内容を示している。#で始める行はコメントである。
mcutコマンドは指定した項目を切り出すだけの機能を持つコマンドで、 mcountコマンドは行数をカウントするコマンドである。 そしてmcrossコマンドはクロス集計を行う。 ここでは、各コマンドの詳細な動きよりも、入力データが各コマンドによってどのように加工されていくかその流れを確認されたい。 Mコマンドでは、70以上のコマンドを以上のように組み合わせる事で多様なデータ加工が実現できるのである。
$ mdata man1 >man1.csv #END# mdata man1 $ more man1.csv 顧客,日付,商品 A,20130916,a A,20130916,c A,20130917,a A,20130917,e B,20130916,d B,20130917,a B,20130917,d B,20130917,f $ mcut f=顧客,商品 i=man1.csv o=xxa #END# kgcut f=顧客,商品 i=man1.csv o=xxa $ more xxa 顧客,商品 A,a A,c A,a A,e B,d B,a B,d B,f $ msortf f=顧客,商品 i=xxa o=xxb #END# kgsortf f=顧客,商品 i=xxa o=xxb $ more xxb 顧客%0,商品%1 A,a A,a A,c A,e B,a B,d B,d B,f # 顧客商品別に行数をカウントする。 $ mcount k=顧客,商品 a=件数 i=xxb o=xxc #END# kgcount a=件数 i=xxb k=顧客,商品 o=xxc $ more xxc 顧客%0,商品%1,件数 A,a,2 A,c,1 A,e,1 B,a,1 B,d,2 B,f,1 # 商品を項目にしたクロス集計を実行。購入されていない商品の個数は0にしている。 $ mcross k=顧客 s=商品 f=件数 v=0 i=xxc o=xxd #END# kgcross f=件数 i=xxc k=顧客 o=xxd s=商品 v=0 $ more xxd 顧客%0,fld,a,c,d,e,f A,件数,2,1,0,1,0 B,件数,1,0,2,0,1 # 余分な項目"fld"を除いている。 $ mcut f=fld -r i=xxd o=output.csv #END# kgcut -r f=fld i=xxd o=output.csv $ more output.csv 顧客%0,a,c,d,e,f A,2,1,0,1,0 B,1,0,2,0,1
なお、各コマンドの利用方法については--helpオプションを指定することで簡単なヘルプが表示される(Table 2.4)。 Ver.2.4からは--helpオプションのデフォルトが英語に変更になった為、日本語で出力したい場合は、--helplオプションを指定すると今まで通りに日本語の簡単なヘルプが出力される。 環境変数にKG_LOCALHELP=trueを設定しておくと、--helpで日本語を出力することができる。 また--versionにてMCMDのバージョンが表示される。 このバージョンはコマンド毎のバージョンではなく、MCMD全体のバージョンであることに注意する。 したがって、全てのコマンドで同じバージョンが表示される。
mcut 項目の選択 =============== 指定した項目を選択する。 -rオプションを付けると、指定した項目を削除する。 書式 ---- mcut f= [-r] [i=] [o=] [-nfn] [-nfno] [-x] [--help] [--helpl] [--version] パラメータ ---------- f= 抜き出す項目名 項目名をコロンで区切ることで、出力項目名を変更することができる。 ex. f=a:A,b:B -r 項目削除スイッチ f=で指定した項目を削除し、それ以外の項目が抜き出される。 -nfni 入力データの1行目を項目名行とみなさない。よって項目番号で指定しなければならない。 以下のように、新項目名を組み合わせて指定することで項目名行を追加出力することが可能となる。 例)f=0:日付,2:店,3:数量 : : $ mcut --version lib Version 1:1:0:0