1日目:コマンドラインでMCMDの実行

Mコマンドをコマンドラインから実行し、mcutとmsortfの使い方を学びます。

前回準備したデータの中身を確認しておこう。tutorial_jp ディレクトリの中にある dat.csv を開いて中身を確認します。このデータは取引(トランザクション)データと呼ばれるもので、顧客の購買を示しており、一行は単一商品の購買情報から構成されています。また、最初の3行は同じレシート番号なので顧客 1000000の1回の買い物に関する購買情報を表しています。このデータを様々な角度から眺めることで店に貢献している優良顧客の発見や、離脱しそうな顧客など店にとって意味のある情報を得ることができます。

$ less dat.csv

店,日付,時間,レシート,顧客,商品,大分類,中分類,小分類,細分類,メーカー,ブランド,仕入単価,単価,数量,金額,仕入金額,粗利金額
manufacturer,brand,unitCost,unitPrice,quantity,amount,costAmount,profit
A,20010108,142748,1000000,00245A,0000311,1,11,1116,111603,1776,177601,339,441,1,441,339,102
A,20010108,142748,1000000,00245A,0000384,1,14,1402,140205,0556,055600,286,372,1,372,286,86
A,20010108,142748,1000000,00245A,0000304,1,11,1107,110707,1487,148704,343,446,1,446,343,103
A,20010110,121010,1000001,00228A,0000426,1,11,1106,110601,1763,176305,177,231,5,1155,885,270
A,20010110,121010,1000001,00228A,0000313,1,11,1119,111997,1378,137803,185,241,6,1446,1110,336
A,20010110,121010,1000001,00228A,0000486,1,11,1108,110801,1315,131504,208,271,1,271,208,63
A,20010110,121010,1000001,00228A,0000393,1,11,1105,110517,1889,188901,410,533,6,3198,2460,738
A,20010110,121010,1000001,00228A,0000472,1,14,1402,140205,1974,197403,267,348,1,348,267,81
A,20010110,121010,1000001,00228A,0000332,1,11,1107,110721,0550,055003,354,461,1,461,354,107
...
..

mcutによる項目の抜き出し

それでは、Mコマンドを実行してみます。まずは、項目を切り出すコマンド mcut を利用して、データから顧客と金額を抜き出します。以下のようにmcutコマンドを入力して実行します。

$ mcut f=顧客,金額 i=dat.csv o=xx1
#END# kgcut f=顧客,金額 i=dat.csv o=xx1; IN=24737 OUT=24737; 2014/06/04 08:56:28

mcut は f= の後に抜き出したい項目名を指定します。複数の項目を抜き出したい場合は、項目名をカンマでつなげて記述します。i= は入力ファイルを指定するためのパラメータで、o= は出力したいファイルを指定するためのパラメータです。正しく実行できると、#END# から始めるメッセージが出力されます。IN=… は入力ファイルの行数で、OUT=…は出力ファイルの行数を表しています。項目を抜き出しただけなので、入力も出力も同じ行数になっています。Mコマンドはコマンド毎に指定できるパラメータが若干ことなっているため、使えるパラメータを確認するために–help オプションが用意されています。「 コマンド名 –help 」と入力します。

$ mcut --help
mcut 項目の選択
===============
指定した項目を選択する。
-rオプションを付けると、指定した項目を削除する。

書式
----
mcut f= [-r] [i=] [o=] [-nfn] [-nfno] [-x] [--help] [--version]  

パラメータ
----
---

出力されたファイルの中身を確認します。顧客と金額が抜き出せたことが確認できます。

$ less xx1

顧客,金額
00245A,441
00245A,372
00245A,446
00228A,1155
00228A,1446
00228A,271
00228A,3198
00228A,348
...
..

msortfによるデータの並び変え

続いて、先ほど出力したファイルxx1を使って、金額を並び替えてみます。並び変えはmsortfというコマンドを利用します。msortfは f=というオプションで並び替える項目名を指定します。

$ msortf f=金額 i=xx1 o=xx2
#END# kgsortf f=金額 i=xx1 o=xx2; IN=24737 OUT=24737; 2014/06/04 10:05:08

出力されたフアイルxx2の中身を確認すると、赤色で書かれた金額が1008,101の順に並び替わっています。つまりこの並びは、文字の昇順(小さい順)です。文字の場合は、桁ごとに大小が比較されるので左から2桁目までは同じ10で、3桁目に1008の0と101の1が比較されて1008のほうが小さいと判断されています。

$ less xx2

顧客,金額
00108C,-0
00198B,1000
00054B,1000
...
00247D,1008
00096A,1008
00088D,1008
00103A,1008
00065D,101
00056A,101
00078D,101
...
..

並び変えには、小さい順にならべる「昇順」大きい順に並び替える「降順」数値として並び替える「数値順」の3種類あり、それらを組み合わせることで並び変えを行います。先ほど確認したとおり、何も指定しない場合は、文字の昇順に並び変わります。降順は %r数値順は%nというオプションを指定します。それでは、金額の大きい順に数値として並び替えてみます。数値の降順なので、項目名%nrと指定します。

$ msortf f=金額%nr i=xx1 o=xx3
#END# kgsortf f=金額%nr i=xx1 o=xx3; IN=24737 OUT=24737; 2014/06/04 10:44:00

$ less xx3
顧客,金額
00067B,10690
00114B,9680
00298B,9618
00220A,9338
...
..

数値の降順に並び替わっていることが確認できました。全顧客中の最高利用額は、顧客000678が1種類の商品に対して10690円支払ったことがわかります。

更に学習を深めるためのリンク

戻る