テーブルのマージ
テーブルのマージを使用すると、レコード構造が同一である 2 つの並べ替え済みの Analytics テーブルを結合して、元のテーブルと同じ並び順になっている第 3 の新しいテーブルに出力することができます。 マージはレコードの挿入によって動作します。既存の並べ順に従って、レコードを結合することを意味します。
並べ替えられた従業員テーブルの並べ順を保持する統合テーブルと組み合わせるなど、有用なタスクを実行するために、マージ処理を使用できます。
例
シナリオ
従業員レコードのセット全体に対して分析を実行したいが、レコードが 2 つの課員テーブルに分散している場合を考えます。
どちらのテーブルもラストネームで並べ替えられているため、レコードを結合後に再度並べ替えるオーバーヘッドが生じないようにしたいとします。
アプローチ
2 つのテーブルにあるレコードを、新しい第 3 のテーブルに結合します。 マージを行うことで、ラストネームでの並べ替えが保持されます。
テーブルには同じレコード構造が必要です
2 つのテーブルを正常にマージするには、両方のテーブルのレコードは、構造がまったく同じであることが必要です。
- データ要素、およびフィールドの数と順序は同一である必要があります。
- 対応するフィールドのデータ型は同じである必要があります。
- 対応するフィールドの開始位置と長さは、同一である必要があります。
- 日付時刻フィールドについては、日付時刻形式が同じである必要があります。
メモ
[マージ]ダイアログ ボックスには、文字フィールドと文字の演算フィールドのみが表示されます。 表示されないフィールドも、2 つのテーブル間で同一のデータ構造である必要があります。
レコード構造の比較
2 つのテーブルをマージする前に、テーブルの対応するフィールドを比較し、同じ構造であることを確認できます。 詳細については、データ構造の比較を参照してください。
フィールド レベルのデータ構造の違いによって、テーブルの正常なマージが妨げられている場合は、対応するフィールドを一致させることができる可能性があります。 詳細については、フィールドの一致を参照してください。
ヒント
場合によっては、Analytics 外でデータを結合する方が簡単あるいは実用的であることもあります。 フィールド間で一貫性がないために、Analytics でデータをマージすることが困難な場合は、データの結合の代替方法を参照してください。
共通のキー フィールドを使用したテーブルのマージ
共通のキー フィールド(従業員番号やベンダー ID、姓など両方のテーブルに存在するデータ要素)を使用してテーブルをマージします。 2 つの元のテーブルのレコードは、元のテーブルで使用される並べ順での配置に基づき、マージされたテーブルに配置されます。
マージするテーブルのキー フィールドには複数の要件が適用されます。
キー フィールドの特性 | 要件 |
---|---|
データ要素 | 同じである必要があります。 たとえば、両方のキー フィールドが姓フィールドです。 |
並べ替え順序 | 同じで、昇順である必要があります。 メモ マージ操作時に主キー フィールドを並べ替えるには、[主テーブルをあらかじめ並べ替える]オプションを使用することができます。 副キー フィールドが並べ替えられていない場合は、マージを実行する前に、まず別個の並べ替え操作でフィールドの並べ替えを行ってください。 |
データ型 |
文字である必要があります。 |
フィールド型 | 物理フィールドまたは演算フィールドにできます。 |
フィールド名 | 異なることができます。 |
開始位置 | 同じである必要があります。 |
フィールド長 |
同じである必要があります。 |
主テーブル、副テーブル、キー フィールド
マージ操作の対象となるテーブルとキー フィールドは、テーブルを開く順序に基づき、主および副として識別されます。
-
主テーブル – 最初に開いたテーブル
-
主キー フィールド – 主テーブルから選択したキー フィールド
-
副テーブル – 2 番目に開いたテーブル
副テーブルを開くことは、それを主テーブルに関連付け、処理のために利用できるようにすることを意味します。 副テーブルはビュー タブで開かれません。
-
副キー フィールド – 副テーブルから選択したキー フィールド
主および副となるテーブルやキー フィールドは自由に選択できます ただし、このマージが成功するのは、その対象テーブルとキー フィールドがマージの必要条件を満たしている場合のみです。
詳細については、キー フィールドについてを参照してください。
複数のキー フィールドのテーブルのマージ
複数の主キー フィールドおよび副キー フィールド(複数の共通キー)を使用して 2 つのテーブルをマージする場合は、さらに以下の要件が適用されます。
- キー フィールドはすべて昇順に並んでいる必要があります。これは各テーブルで、入れ子になっている並べ替えパターンがあることを意味します。
- 各テーブルでキー フィールドを選択する順序は、各テーブルにおける入れ子の並べ替えパターンの順序と同じでなければなりません。
- 両方のテーブルで、入れ子の並べ替えパターンが同じである必要があります。
マージに関する追加情報
以下のテーブルではマージに関する追加情報を提供します。
機能分野 | 詳細 |
---|---|
出力テーブルのサイズ | 結果として生じる結合テーブル内のレコード数は、マージされる 2 つのテーブル内のレコード数の合計になります。 |
レコードとフィールド | マージできるのはレコード全体のみです。 |
キー フィールドのデータ型 |
文字フィールドまたは文字の演算フィールドのみ、キー フィールドに指定できます。 ヒント Analytics 関数を使用して、数値または日付時刻フィールドを文字フィールドに変換できます。 詳細については、フィールドの一致を参照してください。 |
同じキー フィールド値 | 主テーブルと副テーブルのレコードのキー フィールド値が同一である場合は、主テーブルのレコードが副テーブルのレコードより先に並べ替えられます。 |
対応するフィールドの名前 | 主テーブルと副テーブルの対応するフィールドは、同じ名前である必要はありません。 結果として生じる結合テーブルでは、主テーブルのフィールド名が優先されます。 |
対応する演算フィールド | 対応する演算フィールドがある場合、主テーブルの演算フィールドの式は副テーブルの式よりも優先されます。 |
パフォーマンスのヒント | サイズが異なる 2 つのテーブルをマージするときに、大きい方のテーブルを主テーブルとして使用すると、処理が少なくて済みます。 |
並べ替えの代わりのインデックス |
主キー フィールドと副キー フィールドは、並べ替える代わりに昇順でインデックスを付けることができます。 インデックスは並べ替えよりもパフォーマンス上の利点を提供します。 副テーブルへのインデックスの適用は、コマンド ラインまたはスクリプト内のみで行うことができます。 |
範囲パラメーター | 処理されるレコードを絞り込むための If、While、First、Next パラメーターは、主テーブルにのみ適用されます。 |
テーブルの位置 | マージするためには、その対象となるテーブルは同じ Analytics プロジェクト内に存在している必要があります。 サーバーにあるテーブルであれば同じサーバー上にあり、同じサーバー プロファイルを使用してアクセスする必要があります。 ローカルのテーブルとサーバーのテーブルをマージすることはできません。 |