範囲により参照ファイルの項目を結合(join)する。 r=パラメータで指定した項目値が、m=パラメータで指定した参照ファイルの R=パラメータで指定した2項目の値の範囲条件(項目1以上項目2未満)に マッチすればf=パラメータの項目を結合する。 マッチする行が複数あれば、それらの行全てが出力され、ちょうど自然結合のような動きをする。 範囲比較される値は、デフォルトで文字列と見なされる。 数値として処理したい場合はr=パラメータの項目名のあとに%nをつける。
mnrjoin R= r= [k=] [K=] [f=] [-n] [-N] m=| i= [o=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
f= |
結合する参照ファイル上の項目名リスト(複数項目指定可)を指定する。 |
省略するとK=で指定された項目以外の項目を全て結合する。 |
|
m= |
参照ファイル名を指定する。 |
このパラメータが省略された時には標準入力が用いられる。(i=指定ありの場合) |
|
R= |
範囲項目名リスト(二項目限定) |
参照ファイル上の範囲項目名(start,end)を指定する。 |
|
第一項目のNULL値は無限小,第二項目のNULL値は無限大として扱われる。 |
|
r= |
範囲比較される項目名[%n] |
入力ファイル上の項目名を指定する。 |
|
数値として処理したい場合はr=パラメータの項目名のあとに%nをつける。 |
|
k= |
入力データ上の突き合わせる項目名リスト(複数項目指定可) |
ここで指定した入力データの項目とK=パラメータで指定された参照データの項目が同じ行の項目結合が行われる。 |
|
K= |
参照データ上の突き合わせる項目名リスト(複数項目指定可) |
ここで指定した参照データの項目とk=パラメータで指定された入力データの項目が同じ行の項目結合が行われる。 |
|
参照データ上にk=パラメータで指定した入力データ上の項目と同名の項目が存在する場合は指定する必要はない。 |
|
-n |
参照データにない入力データをNULL値として出力するフラグ。 |
-N |
入力データにない参照データをNULL値として出力するフラグ。 |
例えば、パラメータをk=key K=Key r=val%n R=range i=dat.csv m=ref.csvと指定するのであれば、 dat.csvデータは、msortf f=key,val%nの条件で、また ref.csvデータは、msortf f=Key,range%nの条件によって並べ替えておかなければならない。
日付項目の値が20080203で、「金額」項目の値が5以上15未満の入力データ行にはavg=150を、 40以上50未満の行にはavg=200を結合する。
$ more dat1.csv date,price 20080123,10 20080123,20 20080203,10 20080203,35 200804l0,50 $ more ref1.csv date,priceF,priceT,avg 20080203,5,15,150 20080203,40,50,200 $ mnrjoin k=date f=avg m=ref1.csv R=priceF,priceT r=price%n i=dat1.csv o=rsl1.csv #END# kgnrjoin R=priceF,priceT f=avg i=dat1.csv k=date m=ref1.csv o=rsl1.csv r=price%n $ more rsl1.csv date%0,price,avg 20080203,10,150
-nを指定することで、参照ファイルにマッチしない入力ファイルの行(avg=がNULL値の行)も出力し、 -Nを指定することで、入力ファイルにマッチしない参照ファイルの行(price=がNULL値の行)も出力する。 いわゆる外部結合である。
$ mnrjoin k=date f=avg m=ref1.csv R=priceF,priceT r=price%n -n -N i=dat1.csv o=rsl2.csv #END# kgnrjoin -N -n R=priceF,priceT f=avg i=dat1.csv k=date m=ref1.csv o=rsl2.csv r=price%n $ more rsl2.csv date%0,price,avg 20080123,10, 20080123,20, 20080203,10,150 20080203,35, 20080203,,200 200804l0,50,
mrjoin : 参照データの結合キー(K=項目)に重複がなければmrjoinを使う。