Previous: mnrcommon 参照ファイルの複数範囲条件による行撰択 Up: コマンドリファレンス Next: mnullto NULL値の置換 MCMD2
MCMD2 : コマンドリファレンス : mnrjoin 参照ファイルの複数範囲条件による自然結合

3.38 mnrjoin 参照ファイルの複数範囲条件による自然結合

範囲により参照ファイルの項目を結合(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の条件によって並べ替えておかなければならない。

利用例

例1: 基本例

日付項目の値が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

例2: 未結合データ出力

-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を使う。

Previous: mnrcommon 参照ファイルの複数範囲条件による行撰択 Up: コマンドリファレンス Next: mnullto NULL値の置換 MCMD2