JOIN コマンド

2 つの Analytics テーブルのフィールドを連結して 1 つの新しい Analytics テーブルにします。

メモ

曖昧一致を使用して、テーブルを結合するには、「FUZZYJOIN コマンド」を参照してください。

構文

JOIN {PKEY 主キー フィールド|PKEY ALL <EXCLUDE フィールド名 <...n>>} {FIELDS 主フィールド|FIELDS ALL <EXCLUDE フィールド名 <...n>>} {SKEY 副キー フィールド|SKEY ALL <EXCLUDE フィールド名 <...n>>} <WITH 副フィールド|WITH ALL <EXCLUDE フィールド名 <...n>>> {キーワードなし|MANY|UNMATCHED|PRIMARY|SECONDARY|PRIMARY SECONDARY} <IF テスト> TO テーブル名 <LOCAL> <OPEN> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <APPEND> <PRESORT> <SECSORT> <ISOLOCALE ロケール コード>

パラメーター

名前 説明
PKEY 主テーブルのキー フィールド | PKEY ALL

主テーブルのキー フィールド(複数可)または式。

  • PKEY 主テーブルのキー フィールド指定された 1 つまたは複数のフィールドを使用します

    フィールドは一覧の順序で使用されます。

  • PKEY ALLテーブルのすべてのフィールドを使用します

    フィールドは、テーブル レイアウトに現れる順序と同じ並びで使用されます。

EXCLUDE field_name

任意

PKEY ALL を使用して、結合を実行するときにのみ有効です。

コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、PKEY ALL を微調整できます。

EXCLUDE は PKEY ALL の直後に置く必要があります。例:

PKEY ALL EXCLUDE field_1 field_2
FIELDS 主フィールド | FIELDS ALL

結合先の出力テーブルに含める、主テーブル内のフィールドまたは式。

  • FIELDS 主テーブルのフィールド指定した 1 つまたは複数のフィールドが含まれます。

    フィールドは一覧の順序で含まれます。

  • FIELDS ALLテーブルのすべてのフィールドを含めます

    フィールドは、テーブル レイアウトに現れる順序と同じ並びで含まれます。

メモ

結合テーブルに含める場合は、主キー フィールドを明示的に指定する必要があります。FIELDS ALL を指定しても含まれます。

EXCLUDE 主フィールド

任意

FIELDS ALL を使用して、結合を実行するときにのみ有効です。

コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、ALL キーワードを微調整できます。

EXCLUDE は、FIELDS ALL の直後、または 1 つ以上の関連テーブルのフィールドを含める場合は ALL キーワードの最後の出現の直後に続く必要があります。例:

FIELDS ALL EXCLUDE field_1 field_2
FIELDS ALL 関連テーブル名.ALL EXCLUDE field_1 field_2 
SKEY 副テーブルのキーフィールド | SKEY ALL

副テーブルのキー フィールド(複数可)または式。

  • SKEY 副テーブルのキーフィールド指定された 1 つまたは複数のフィールドを使用します

    フィールドは一覧の順序で使用されます。

  • SKEY ALLテーブルのすべてのフィールドを使用します

    フィールドは、テーブル レイアウトに現れる順序と同じ並びで使用されます。

EXCLUDE field_name

任意

SKEY ALL を使用して、結合を実行するときにのみ有効です。

コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、PKEY ALL を微調整できます。

EXCLUDE は SKEY ALL の直後に置く必要があります。例:

SKEY ALL EXCLUDE field_1 field_2

WITH 副フィールド | WITH ALL

任意

結合先の出力テーブルに含める、副テーブル内のフィールドまたは式。

  • WITH 副フィールド指定した 1 つまたは複数のフィールドが含まれます。

    フィールドは一覧の順序で含まれます。

  • WITH ALLテーブルのすべてのフィールドを含めます

    フィールドは、テーブル レイアウトに現れる順序と同じ並びで含まれます。

メモ

結合テーブルに含める場合は、副キー フィールドを明示的に指定する必要があります。WITH ALL を指定すると含まれます。

結合タイプ "UNMATCHED" を使用する場合には、"WITH" は指定できません。

EXCLUDE field_name

任意

WITH ALL を使用して、結合を実行するときにのみ有効です。

コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、WITH ALL を微調整できます。

EXCLUDE は WITH ALL の直後に置く必要があります。例:

WITH ALL EXCLUDE field_1 field_2
キーワードなし | MANY | UNMATCHED | PRIMARY | SECONDARY | PRIMARY SECONDARY

実行する結合の種類。

キーワードなし(結合タイプのどのキーワードも指定しない)

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • すべての一致した主レコードおよび最初に一致した副レコード

一致した主レコードおよび副レコード 

(一致する 1 件目の副レコード)

MANY

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • すべての一致した主レコードおよびすべての一致した副レコード
  • 主および副テーブル間の各一致に 1 つのレコード

一致した主レコードおよび副レコード 

(重複する副レコードのすべての一致)

UNMATCHED

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • 不一致の主レコード

主テーブル上の不一致レコードのみを出力

PRIMARY

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • すべての主レコード(一致と不一致の両方)、最初に一致した服レコード

すべての主レコードと、キーに一致する副レコード

メモ

キーワード、BOTH は、PRIMARY を指定することと同じです。

SECONDARY

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • すべての副レコード(一致と不一致)およびすべての一致した主レコード

    重複した副一致の最初のインスタンスだけが主レコードに結合されます。

すべての副レコードと、キーに一致する主レコード

PRIMARY SECONDARY

結合された出力テーブルの内容: 結合]ダイアログ ボックスの対応するオプション
  • すべての主レコードおよび副レコード(一致および不一致)

    重複した副一致の最初のインスタンスだけが主レコードに結合されます。

すべての主レコードおよび副レコード

IF テスト

任意

各レコードを処理するために真である必要がある条件式。コマンドは、その条件を満たすレコードに対してのみ実行されます。

メモ

IF パラメーターは、任意の範囲パラメーター(WHILE、FIRST、NEXT)が適用された後に、テーブルに残るレコードに対してのみ評価されます。

メモ

ほとんどの結合タイプで、IF 条件が主テーブルにのみ適用されます。

例外は多対多結合で、IF 条件が副テーブルも参照できます。副テーブルを参照するには、完全修飾フィールド名(テーブル名.フィールド名)を指定する必要があります。例:

IF Customer.State="NY"
TO テーブル名

コマンドの結果を送信する場所:

  • テーブル名結果を Analytics テーブルに保存します

    テーブル名、.FIL ファイル拡張子を持つ引用符で囲まれた文字列として指定します。例:TO "Output.FIL"

    デフォルトでは、テーブル データ ファイル(.FIL)は、Analytics プロジェクトが入っているフォルダーに保存されます。

    既存の異なるフォルダーにデータ ファイルを保存するには、絶対または相対ファイル パスを指定します。

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    メモ

    テーブル名は 64 文字の英数字(.FIL 拡張子を含まない)に制限されています。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。

LOCAL

任意

Analytics プロジェクトと同じ場所に出力ファイルを保存します。

メモ

Analytics テーブルである出力ファイルを含むサーバー テーブルに対してコマンドを実行するときにのみ適用されます。

LOCAL パラメーターは TO パラメーターの直後に置く必要があります。

開く

任意

コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。

WHILE テスト

任意

各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。

メモ

WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。

FIRST 範囲 | NEXT 範囲

任意

処理するレコード数:

  • FIRST指定されたレコード数に達するまで、最初のレコードから処理を開始します
  • NEXT指定されたレコード数に達するまで、現在選択されているレコードから処理を開始します

範囲は処理するレコード数を指定します。

FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。

APPEND

任意

コマンドの出力を既存ファイルに上書きしないで、そのファイルの末尾に追加します。

メモ

コマンドの出力と既存のファイルの構造が同一であるようにする必要があります。

  • 同じフィールド
  • 同じフィールド順序
  • 一致するフィールドが同じ長さ
  • 一致するフィールドが同じデータ型

出力は、既存ファイルとの間でファイル構造が違っている場合でも、Analytics によって既存ファイルに追加されます。出力と既存のファイルの構造が一致しない場合は、データが混在、不足、不正確になります。

PRESORT

任意

コマンドを実行する前に主キー フィールドで主テーブルを並べ替えます。

メモ

GROUP コマンドの内部では PRESORT を使用することができません。

並べ替えの代わりのインデックス

主テーブルは、並べ替える代わりにインデックスを付けることができます。大きなテーブルでは並べ替えよりインデックス作成を行った方が、テーブルの結合に必要な時間を短くすることができます。

また、インデックス付きの共通のキー フィールドを使用して 2 つのテーブルを結合する場合は、PRESORT と SECSORT を省略します。

SECSORT

任意

コマンドを実行する前に副テーブルのキー フィールドで副テーブルを並べ替えます。

メモ

SECSORT は GROUP コマンド内では使用できません。

並べ替えの代わりのインデックス

副テーブルは、並べ替える代わりにインデックスを付けることができます。大きなテーブルでは並べ替えよりインデックス作成を行った方が、テーブルの結合に必要な時間を短くすることができます。

また、インデックス付きの共通のキー フィールドを使用して 2 つのテーブルを結合する場合は、PRESORT と SECSORT を省略します。

ISOLOCALE ロケールコード

任意

メモ

Analytics の Unicode 版にのみ適用されます。

システム ロケールは「言語-」の形式で入力します。たとえば、カナダ フランス語はコード fr_ca を入力します。

次のコードを使用します。

  • 言語ISO 639 標準言語コード
  • countryISO 3166 標準の国コード

    国コードを指定しない場合、その言語のデフォルトの国が使用されます。

ISOLOCALE を使用しない場合は、デフォルト システム ロケールが使用されます。

業者である可能性がある従業員を検索するための方法として、2 つのテーブルを結合する

次の例は、共通キー フィールドとして住所(Address および Vendor_Street フィールド)を使用し、Empmast および Vendor テーブルを結合します。

JOIN コマンドは、新しいテーブルと、一致する主および副レコードを作成します。これにより、同じ住所の従業員と業者のリストが作成されます。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS Empno First Last Address SKEY Vendor_Street WITH Vendor_No Vendor_Name Vendor_Street TO "Employee_Vendor_Match" OPEN PRESORT SECSORT

このバージョンの JOIN コマンドは、主テーブルと副テーブルのすべてのフィールドを結合された出力テーブルに含めます。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS ALL SKEY Vendor_Street WITH ALL TO "Employee_Vendor_Match" OPEN PRESORT SECSORT

このバージョンの JOIN コマンドは IF 条件を使用して、結合された出力テーブルを、カリフォルニアに所在地がある従業員と業者に制限しています。

結合タイプは MANY です。IF 条件で副テーブルを参照する場合には、このタイプが必要です。副テーブルのフィールド名は完全修飾名でなければなりません (Vendor.Vendor_State) 。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS ALL SKEY Vendor_Street WITH ALL IF State="CA" AND Vendor.Vendor_State="CA" TO "Employee_Vendor_Match" OPEN PRESORT MANY SECSORT

一致する顧客がない売掛金レコードを検出する方法として、2 つのテーブルを結合します。

次の例では、Ar テーブルと Customer テーブルを、顧客番号(CustNo)を共通のキー フィールドとして用いて結合します。

JOIN コマンドは、結合タイプ UNMATCHED を使用して、主テーブルの不一致レコードを含む新しいテーブルを作成しています。その結果、どの Customer レコードとも関連付けられていない Ar レコードの一覧が生成されます。

OPEN Ar PRIMARY
OPEN Customer SECONDARY
JOIN PKEY CustNo FIELDS CustNo Due Amount SKEY CustNo UNMATCHED TO "CustomerNotFound.fil" OPEN PRESORT SECSORT

備考

このコマンドの動作の詳細については、 テーブルの結合を参照してください。

書き込みエラー検出のアクティブ化

JOIN コマンドが完了し、結合された出力テーブルを作成せずに成功を報告することがあります。Analytics の外部のディスクまたは環境への書き込みの問題が根本原因です。

このような場合は、スクリプトで SET WRITEFAILSTOP ON を指定することで書き込みエラー検出をアクティブ化することができます。JOIN コマンドが出力テーブルを作成できなかった場合、コマンド処理が直ちに停止し、エラー メッセージがログに記録されます。

詳細については、SET WRITEFAILSTOP を参照してください。