結合
2つのテーブルをキー項目で照合し、1つのテーブルにまとめます。内部結合・左結合・不一致レコードの抽出など、監査手続きでよく使う結合方法に対応しています。
機能
《結合》は、開いているテーブル(主テーブル)と、ほかのテーブル(副テーブル)を、キーとなるフィールドの値が一致するレコードどうしで結び付けて、新しいテーブルを作成する機能です。どのレコードを残すかは、7つの「結合パターン」から選択します。「(7)あいまい結合」では、キーの文字列が完全に一致しなくても、似ているレコードを結び付けます。元のテーブルは変更されません。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン |
| A04 | 消しゴム |
→
| 売上No | 商品No | 数量 | 商品No_2 | 商品名 |
|---|---|---|---|---|
| 1 | A01 | 4 | A01 | ノート |
| 2 | A01 | 2 | A01 | ノート |
| 3 | A02 | 3 | A02 | ボールペン |
| 4 | A03 | 5 |
- フィールドは、主テーブルの出力フィールド、副テーブルの出力フィールドの順に、それぞれ選択した順で並びます(「(6)すべての副レコードとキーが一致する主レコード」だけは副テーブルのフィールドが先になります)。
- 主テーブルと同じ名前の副テーブルのフィールドは、名前の後ろに「_2」が付きます(例:商品No_2)。データ型と書式は元のフィールドと同じです。
- キーが一致するレコードがない側のフィールドの値は、文字型は空欄、数値型は「0」になります。
- キーの比較では、大文字・小文字、全角・半角が区別されます(例:「a01」「A01」は「A01」と一致しません)。
メニュー
《加工》-《結合》
- テーブルを開いている場合に使用できます。開いているテーブルが主テーブルになります。
- テーブルの画面で条件式を設定している場合は、その条件式が「条件式(主テーブル)」に入力された状態で開きます。
- プロジェクトにほかのテーブルがない場合は、メッセージが表示され、画面は開きません。
- 操作ログから結合のコマンドを修正することもできます(「■ 操作ログからコマンドを修正する場合」参照)。
操作ログからコマンドを修正する場合
操作ログで結合(JOIN)またはあいまい結合(FUZZYJOIN)のコマンドを修正すると、コマンドの内容が設定された状態で画面が開きます。
- 結合パターン、副テーブル、キーと出力フィールド、あいまい結合の設定、オプション、条件式、保存先が復元されます。
- フィールドは、コマンドに記述された順に選択されます。テーブルにないフィールドは選択されません。
- 副テーブルがプロジェクトにない場合(削除された場合など)は、「副テーブル」が「テーブルを選択」のまま開きます。副テーブルを選択し直してください。
- テーブルの画面で条件式を設定している場合は、コマンドの条件式ではなく、その条件式が入力されます。
設定内容

- 1主テーブル:結合の元になる主テーブル(開いているテーブル)の、フォルダ名とテーブル名が表示されます。
- 2《フィールド選択》ボタン:フィールドの一覧を開き、3のフィールドをまとめて選択・解除できます。4、6、8も同様です。
- 3主キーフィールド(必須):主テーブルのキーにするフィールドの行をクリックして選択・解除します。
- 左端の番号は選択した順番です。1つ目の主キーと1つ目の副キー、2つ目の主キーと2つ目の副キー・・・が比較され、すべてが一致するとキーが一致したとみなされます。
- 見出しのチェックボックス(またはCtrl+A)で、すべてのフィールドを行の順に選択します。
- 「(7)あいまい結合」では、文字型のフィールドだけが表示されます。
- 4《フィールド選択》ボタン:フィールドの一覧を開き、5のフィールドをまとめて選択・解除できます。
- 5副キーフィールド(必須):副テーブルのキーにするフィールドを、3と同じ数だけ選択します。
- 10で副テーブルを選択すると、副テーブルのフィールドが表示されます。副テーブルを変更すると、選択は解除されます。
- 6《フィールド選択》ボタン:フィールドの一覧を開き、7のフィールドをまとめて選択・解除できます。
- 7主テーブルの出力フィールド(必須):作成するテーブルに出力する、主テーブルのフィールドを選択します。選択した順に並びます。
- 8《フィールド選択》ボタン:フィールドの一覧を開き、9のフィールドをまとめて選択・解除できます。
- 9副テーブルの出力フィールド:作成するテーブルに出力する、副テーブルのフィールドを選択します。選択した順に並びます。
- 結合パターンが(1)(3)(5)(7)の場合は必須です。(2)(4)(6)の場合は選択しなくても実行できます。
- (4)の場合は、副テーブルのフィールドは出力されないため、選択できません(選択は解除されます)。
- 10副テーブル(必須):主テーブルと結合する副テーブルを選択します。
- プロジェクトのテーブル(主テーブルと同じ名前のテーブルを除く)と、参照プロジェクトのテーブル(「プロジェクト名: テーブル名」)が表示されます。
- 一覧の上の「テーブル名で検索」に文字を入力すると、その文字を名前に含むテーブルだけが表示されます(大文字・小文字は区別しません)。
- 11結合パターン(必須):作成するテーブルに残すレコードを選択します(「◇結合の結果」参照)。
- 初期値は「(1)すべての主レコードとキーが一致する副レコード」です。
- 「(7)あいまい結合」を選択すると、画面のタイトルが「曖昧結合」になり、22~26が表示されます(「■ あいまい結合を選択した場合」参照)。キーの選択は解除されます。
- 12処理前にスペースを削除する:オンにすると、文字型のフィールドの値の前後のスペースを削除してから、キーを比較します。初期値はオンです。
- 例えば「 A01 」と「A01」が一致します。作成するテーブルの文字型の値も、前後のスペースが削除されます。
- オフにすると、スペースを含めたまま比較し、値もそのまま出力します。
- 13《式ビルダー》ボタン:「式ビルダー」画面を開き、主テーブルのフィールドや関数を選んで条件式を作成できます。
- 14条件式(主テーブル)(任意):主テーブルのレコードを絞り込む条件を入力します。条件に合う主テーブルのレコードだけが結合されます。空欄の場合は、すべてのレコードが対象です。
- 副テーブルのレコードは絞り込まれません。
- 入力中に、関数やフィールドの候補が表示されます(Ctrl+Spaceで表示、Escで閉じます)。
- 15《検証》ボタン:条件式が正しいかを確認します(Ctrl+Enter)。誤りがある場合は、メッセージが表示されます。
- 16ファイル保存先(必須):作成するテーブルの名前を入力します。
- テーブル名だけの場合は「04_table」フォルダに、「フォルダ名¥テーブル名」の場合はそのフォルダに作成されます。フォルダがない場合は作成されます。
- 拡張子(.hdf5)は省略できます。「04_table」フォルダ以外の場所には保存できません。
- テーブル名の長さは、64文字までです。
- 記号(「-」「.」「#」など)や全角スペースは使用できません。名前の最後に「¥」「/」、途中に「..」は入力できません。
- 主テーブル・副テーブルと同じ名前は使用できません(大文字・小文字やフォルダが違っても同じ名前とみなされます)。
- 同じ名前のテーブルがすでにある場合は、上書きしてよいかの確認メッセージが表示されます。「いいえ」を選択すると、実行せずに画面に戻ります。
- 17《参照》ボタン:保存画面を開き、保存先を選択できます。
- 18コマンド:現在の設定で実行されるコマンドが表示されます(「◇操作ログ」参照)。副テーブルを選択すると表示されます。
- 19《コピー》ボタン:コマンドをクリップボードにコピーします。
- 20《キャンセル》ボタン:実行せずに画面を閉じます(Escキー)。確認メッセージで「はい」を選択すると閉じます。
- 21《実行》ボタン:実行します(Enterキー)。テーブルが作成されると、画面が閉じ、作成したテーブルが開きます。
結合パターンの一覧
11の一覧には、結合パターンが図とともに表示されます。左の円が主テーブル、右の円が副テーブルで、色の付いた部分が作成するテーブルに残るレコードです。

あいまい結合を選択した場合
「(7)あいまい結合」を選択すると、次の項目が表示されます。

- 22あいまい結合パターン(必須):キーが似ているかどうかの判定方法を、「ダイス係数」(初期値)または「レーベンシュタイン」から選択します。
- 切り替えても、23、24、26に入力した値はそれぞれ保持されます。
- 23割合(必須):キーがどれだけ似ていれば一致とみなすかを、0~1の数値(小数点以下4桁まで)で入力します。1に近いほど、よく似たキーだけが一致します。
- 24N-gram(必須):キーの文字列を区切る文字数を、1~10の整数で入力します。
- 25最初の副キー一致のみを結合:オンにすると、主テーブルの各レコードに、似ている副テーブルのレコードのうち、副テーブルで最初のレコードだけを結合します。初期値はオフです。
「あいまい結合パターン」で「レーベンシュタイン」を選択すると、23、24の代わりに次の項目が表示されます。

- 26距離(必須):異なる文字数がいくつまでなら一致とみなすかを、1~9999の整数で入力します。
結合の結果
結合パターンによって、作成するテーブルに残るレコードは次のようになります。例は「◇機能」と同じ2つのテーブル(キーは商品No、出力フィールドはすべて)です。「(1)すべての主レコードとキーが一致する副レコード」の結果は「◇機能」の例のとおりです。
(2)キーが一致した主レコードと副レコード (最初の1件目)
キーが一致したレコードだけが残ります。商品マスタにない売上(A03)は残りません。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン |
| A04 | 消しゴム |
→
| 売上No | 商品No | 数量 | 商品No_2 | 商品名 |
|---|---|---|---|---|
| 1 | A01 | 4 | A01 | ノート |
| 2 | A01 | 2 | A01 | ノート |
| 3 | A02 | 3 | A02 | ボールペン |
(4)主レコードの中で、副レコードとキーが一致しないレコード
副テーブルにキーが一致するレコードがない、主テーブルのレコードだけが残ります。副テーブルのフィールドは出力されません。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン |
| A04 | 消しゴム |
→
| 売上No | 商品No | 数量 |
|---|---|---|
| 4 | A03 | 5 |
(5)すべての主レコードと副レコード
両方のテーブルのすべてのレコードが残ります。売上のない商品(A04)は、主テーブルのフィールドが空欄(数値型は「0」)になります。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン |
| A04 | 消しゴム |
→
| 売上No | 商品No | 数量 | 商品No_2 | 商品名 |
|---|---|---|---|---|
| 1 | A01 | 4 | A01 | ノート |
| 2 | A01 | 2 | A01 | ノート |
| 3 | A02 | 3 | A02 | ボールペン |
| 4 | A03 | 5 | ||
| 0 | 0 | A04 | 消しゴム |
(6)すべての副レコードとキーが一致する主レコード
副テーブルのすべてのレコードが残り、副テーブルのフィールドが先に並びます。キーが一致する主テーブルのレコードは、すべて結合されます。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン |
| A04 | 消しゴム |
→
| 商品No_2 | 商品名 | 売上No | 商品No | 数量 |
|---|---|---|---|---|
| A01 | ノート | 1 | A01 | 4 |
| A01 | ノート | 2 | A01 | 2 |
| A02 | ボールペン | 3 | A02 | 3 |
| A04 | 消しゴム | 0 | 0 |
副テーブルにキーが一致するレコードが複数ある場合
例は、商品マスタにA02が2件ある場合です。「(3)キーが一致した主レコードと副レコード (一致するものすべて)」では、2件とも結合されます。
| 売上No | 商品No | 数量 |
|---|---|---|
| 1 | A01 | 4 |
| 2 | A01 | 2 |
| 3 | A02 | 3 |
| 4 | A03 | 5 |
| 商品No | 商品名 |
|---|---|
| A01 | ノート |
| A02 | ボールペン黒 |
| A02 | ボールペン赤 |
→
| 売上No | 商品No | 数量 | 商品No_2 | 商品名 |
|---|---|---|---|---|
| 1 | A01 | 4 | A01 | ノート |
| 2 | A01 | 2 | A01 | ノート |
| 3 | A02 | 3 | A02 | ボールペン黒 |
| 3 | A02 | 3 | A02 | ボールペン赤 |
- 「(5)すべての主レコードと副レコード」も、キーが一致する副テーブルのレコードがすべて結合されます。
- 「(1)すべての主レコードとキーが一致する副レコード」「(2)キーが一致した主レコードと副レコード (最初の1件目)」では、副テーブルで最初のレコード(ボールペン黒)だけが結合されます。
(7)あいまい結合
キーの文字列が似ているレコードどうしを結合します。似ているレコードがない主テーブルのレコードは残りません。似ているレコードが複数ある場合は、そのすべてと結合されます。例は、得意先名をキーにした場合です。
- ダイス係数:キーの文字列をN-gramの文字数ずつ区切り、共通する部分の割合が割合以上の場合に一致とみなします。例えばN-gramが2の場合、「田中商事」(田中・中商・商事)と「田中商事㈱」(田中・中商・商事・事㈱)は、2×3÷(3+4)=0.86です。
- レーベンシュタイン:一方のキーをもう一方にするために、追加・削除・置き換えが必要な文字数が距離以下の場合に一致とみなします。「田中商事」と「田中商事㈱」は1文字です。
| 売上No | 得意先名 |
|---|---|
| 1 | 山田商店 |
| 2 | 田中商事 |
| 3 | 佐藤工業 |
| コード | 名称 |
|---|---|
| K01 | 山田商店 |
| K02 | 田中商事㈱ |
| K03 | 田中商事 |
→
| 売上No | 得意先名 | コード | 名称 |
|---|---|---|---|
| 1 | 山田商店 | K01 | 山田商店 |
| 2 | 田中商事 | K02 | 田中商事㈱ |
| 2 | 田中商事 | K03 | 田中商事 |
- 割合を0.9にすると、「田中商事㈱」(0.86)は一致しなくなり、売上No 2には「田中商事」(K03)だけが結合されます。
- レーベンシュタインで距離を1にした場合も、上の図と同じ結果になります。
「最初の副キー一致のみを結合」をオンにすると、似ている副テーブルのレコードのうち、副テーブルで最初のレコードだけが結合されます。
| 売上No | 得意先名 |
|---|---|
| 1 | 山田商店 |
| 2 | 田中商事 |
| 3 | 佐藤工業 |
| コード | 名称 |
|---|---|
| K01 | 山田商店 |
| K02 | 田中商事㈱ |
| K03 | 田中商事 |
→
| 売上No | 得意先名 | コード | 名称 |
|---|---|---|---|
| 1 | 山田商店 | K01 | 山田商店 |
| 2 | 田中商事 | K02 | 田中商事㈱ |
入力内容に誤りがある場合
《実行》ボタンをクリックしたときに、副テーブルが選択されていない、キーが選択されていない、保存先が空欄などの誤りがあると、画面の左下にメッセージが表示され、該当する項目が赤枠で示されます。項目を修正するとメッセージは消え、《実行》ボタンが使用できるようになります。

- 「(7)あいまい結合」では、割合・N-gram・距離が範囲外の場合も、同様にメッセージが表示されます。
- 主キーと副キーの数が異なる場合、日付型のキーの書式が主テーブルと副テーブルで異なる場合、条件式に誤りがある場合は、実行時に誤りの内容を示す画面が表示されます。画面は閉じないので、設定を修正してもう一度実行してください。
操作ログ
OPEN "主テーブル" OPEN "副テーブル" SECONDARY JOIN PKEY [主キー1] ・・・ FIELDS [フィールド1] ・・・ SKEY [副キー1] ・・・ WITH [フィールド1] ・・・ 結合パターン IF 条件式 TO "保存先" OPEN KEEPSPACE
あいまい結合の場合は、「JOIN」の行が次のようになります(結合パターンは記述しません)。
FUZZYJOIN ON DICE PERCENT 割合 NGRAM N-gram PKEY ・・・ WITH ・・・ IF 条件式 TO "保存先" FIRSTMATCH OPEN KEEPSPACE FUZZYJOIN ON LEVDISTANCE DISTANCE 距離 PKEY ・・・(以降は同じ)
各キーワードの意味は、次のとおりです。
| キーワード | 内容 | 設定内容 |
|---|---|---|
| OPEN “主テーブル” | 主テーブルを開きます | 1 |
| OPEN “副テーブル” SECONDARY | 副テーブルを開きます | 10 |
| JOIN | 結合パターン(1)~(6)で結合します | 11 |
| FUZZYJOIN ON DICE PERCENT 割合 NGRAM N-gram | ダイス係数であいまい結合します | 22~24 |
| FUZZYJOIN ON LEVDISTANCE DISTANCE 距離 | レーベンシュタインであいまい結合します | 22、26 |
| PKEY [主キー1] ・・・ | 主キーフィールド。選択した順に記述します | 3 |
| FIELDS [フィールド1] ・・・ | 主テーブルの出力フィールド | 7 |
| SKEY [副キー1] ・・・ | 副キーフィールド。選択した順に記述します | 5 |
| WITH [フィールド1] ・・・ | 副テーブルの出力フィールド | 9 |
| PRIMARY/(なし)/MANY/UNMATCH | 結合パターン(1)~(4) | 11 |
| PRIMARY SECONDARY/SECONDARY | 結合パターン(5)、(6) | 11 |
| IF 条件式 | 主テーブルのレコードを絞り込む条件 | 14 |
| TO “保存先” | 作成するテーブルの名前(保存先) | 16 |
| FIRSTMATCH | 副テーブルで最初のレコードだけを結合します | 25 |
| OPEN(TOの後) | 作成したテーブルを開きます | ― |
| KEEPSPACE | 前後のスペースを削除せずに比較します | 12 |
- すべてのフィールドを一覧の順に選択した場合は、フィールド名の代わりに「ALLFIELDS」と記述されます。
- 結合パターン(2)にはキーワードがないため、「WITH」のフィールドの後に何も記述されません。(4)の場合は「WITH」の後にフィールドは記述されません。
- 下線部(オプション)は、条件式を入力した場合、25をオンにした場合、12をオフにした場合に記述されます。
コマンドを直接記述する場合(スクリプトなど)
- テーブル名は「”」で、フィールド名は「[ ]」で囲んで記述します。
- 主テーブルは「OPEN」で、副テーブルは「OPEN」と「SECONDARY」で開いてから、結合のコマンドを記述します。
- 主キー(PKEY)と副キー(SKEY)は同じ数だけ記述します。数が異なるとエラーになります。
- 結合パターン(1)(3)(5)では、「WITH」のフィールドは省略できません(省略するとエラーになります)。
- あいまい結合のキーには、文字型のフィールドを指定します。割合は0~1、N-gramは1~10、距離は1~9999の範囲で記述します(範囲外はエラーになります)。
- 「FIRSTMATCH」は「TO “保存先”」と「OPEN」の間に、「KEEPSPACE」は「OPEN」の後に記述します。
オプションの例
| 結合パターン・オプションの記述 | 結合の結果(「◇機能」の例のテーブル) |
|---|---|
| PRIMARY | すべての売上に商品名が付きます(A03は空欄) |
| (なし) | 商品マスタにある売上(A01、A02)だけが残ります |
| MANY | キーが一致する商品マスタのレコードがすべて結合されます |
| UNMATCH | 商品マスタにない売上(A03)だけが残ります |
| PRIMARY SECONDARY | すべての売上と、売上のない商品(A04)が残ります |
| SECONDARY | すべての商品が残り、売上が付きます(A04は空欄) |
| PRIMARY ・・・ OPEN KEEPSPACE | 前後のスペースを含めたまま商品Noを比較します |
例
OPEN "FG¥売上" OPEN "マスタ¥得意先" SECONDARY JOIN PKEY [2_得意先コード] FIELDS ALLFIELDS SKEY [1_得意先コード] WITH [2_得意先名] [3_地域] PRIMARY TO "FG¥売上_得意先" OPEN OPEN "FG¥売上" OPEN "マスタ¥得意先" SECONDARY FUZZYJOIN ON LEVDISTANCE DISTANCE 3 PKEY [3_得意先名] FIELDS ALLFIELDS SKEY [2_得意先名] WITH [3_地域] TO "FG¥売上_得意先" OPEN