ACL のスクリプト作成ガイド 14.1

MERGE コマンド

同一の構造を持つ 2 つの並べ替え済み Analytics テーブルのレコードを結合して、元のテーブルと同じ並べ替え順になっている新しい Analytics テーブルに出力します。

MERGE {ON キーフィールド|PKEY 主テーブルのキー フィールド SKEY 副テーブルのキーフィールド} <IF test> TO テーブル名 <LOCAL> <OPEN> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <APPEND> <PRESORT> <ISOLOCALE ロケールコード>
名前 説明
ON キーフィールド |PKEY 主テーブルのキー フィールド SKEY 副テーブルのキーフィールド

メモ

MERGE では、文字型のフィールドまたは文字型の演算フィールドのみ、キー フィールドとして使用できます。

  • ON キー フィールド 主テーブルおよび副テーブルの対応するキー フィールドが同じ名前の場合にマージするキー フィールド

    対応するフィールドに異なる名前がある場合、または実際の物理フィールドではなく式である場合は、PKEY および SKEY を使用する必要があります。

  • PKEY 主キー フィールド 主テーブルのキー フィールド(複数可)または式
  • SKEY 主キー フィールド 副テーブルのキー フィールド(複数可)または式

並べ替えの要件

主テーブルおよび副テーブルのキー フィールドは、どちらも昇順で並べ替えられている必要があります。一方または両方のキー フィールドが並べ替えられていない、あるいは降順で並べ替えられている場合には、MERGE コマンドは失敗します。

PRESORT を使用すると、主テーブルのキー フィールドを並べ替えることができます。副テーブルのキー フィールドが並べ替えられていない場合は、マージを実行する前に、まず別個の並べ替え操作でフィールドの並べ替えを行ってください。

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

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

IF テスト

省略可能

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

メモ

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

TO テーブル名

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

  • テーブル名は、結果の保存先となる Analytics テーブルのことです。

    テーブル名には、ファイル拡張子 .FIL を付けた文字列を引用符で囲んで指定する必要があります。例:TO "Output.FIL"

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

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

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

    メモ

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

LOCAL

省略可能

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

メモ

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

OPEN

省略可能

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

WHILE テスト

省略可能

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

メモ

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

FIRST 範囲 | NEXT 範囲

省略可能

処理するレコード数:

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

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

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

APPEND

省略可能

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

メモ

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

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

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

PRESORT

省略可能

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

メモ

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

以下の場合は、PRESORT を省略します。

  • 主テーブルのキー フィールドが既に並べ替えられている場合
  • インデックス付きの共通のキー フィールドを使用して 2 つのテーブルをマージする場合

ISOLOCALE ロケールコード

省略可能

メモ

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

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

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

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

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

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

キー フィールド名が同一のテーブルをマージする

次の例では、キー フィールド名が同一である 2 つのテーブルをマージします。

OPEN Employees_Location_1 PRIMARY
OPEN Employees_Location_2 SECONDARY
MERGE ON Last_Name TO "AllEmployees" PRESORT

キー フィールド名が異なるテーブルをマージする

次の例では、キー フィールド名が異なる 2 つのテーブルをマージします。

OPEN Employees_Location_1 PRIMARY
OPEN Employees_Location_2 SECONDARY
MERGE PKEY Last_Name SKEY Surname TO "AllEmployees" PRESORT

メモ

このコマンドの動作の詳細については、Analytics のヘルプを参照してください。

マージの代替手段

マージを正常に実行するには、注意が必要です。追加してから並べ替える、あるいは抽出または追加してから並べ替えるのでも、同じ結果を得ることができます。

詳細については、APPEND コマンドEXTRACT コマンドを参照してください。

2 つのソース テーブルが既に並べ替えられている場合は、マージはより効率的で、より迅速に実行できます。