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

APPEND コマンド

2 つ以上の Analytics テーブルからのレコードを結合するには、それらのレコードを新しい Analytics テーブルに追加します。

APPEND テーブル1, テーブル2, <...n> TO テーブル名 <OPEN> <ASCHAR> <ALLCHAR>
名前 説明
テーブル1, テーブル2, <...n>

追加するテーブル。

各テーブル内のレコードが、テーブルを指定した順に追加されます。出力テーブルにはテーブル1 のレコード、テーブル2 のレコード、という順に格納されます。

各ソース テーブルは、レコード構造が同じでも異なっていてもどちらでも構わず、また、並べ替えても並べ替えなくても構いません。

TO テーブル名

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

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

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

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

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

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

    メモ

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

COMMONFIELDS

省略可能

追加対象となるすべてのテーブルに共通のフィールドのみが、出力テーブルに追加されます。

COMMONFIELDS を省略した場合は、すべてのテーブルの全フィールドが出力テーブルに追加されます。ソース テーブルにフィールドがない場所は、出力テーブルでは空白値になります。

ヒント

これら 2 つのオプションの例を示した図と画面キャプチャについては、テーブルへの追加を参照してください。

メモ

APPEND コマンドでは、演算フィールドの追加がサポートされていないためです。詳細については、演算フィールドがサポートされていないを参照してください。

フィールドが共通と見なされる条件とは

フィールドが共通と見なされるには、フィールドが次のようである必要があります。

  • すべてのソース テーブルに出現している
  • 同じ物理名を持つ
  • 同じデータ型(下記)に属している:
    • 文字
    • 数値
    • 日付時刻
    • 論理

同じ名前、異なるデータ カテゴリ

2 つのフィールドが同じ名前を持っているが、異なるデータ カテゴリに属している場合には、エラー メッセージが表示され、APPEND コマンドは実行されません。

このエラー メッセージには、 APPEND で指定された全テーブルにおけるデータ カテゴリの不一致のすべてが表示されます。このメッセージはコマンド ログに保存されます。

メモ

ASCHAR または ALLCHAR を使用してデータ カテゴリを一致させることで、このような状況を回避できます。

OPEN

省略可能

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

ASCHAR

省略可能

非文字フィールドを文字データ カテゴリに変換することで、同じ名前で異なるデータ カテゴリのフィールドを一致させます。

たとえば、Employee_ID フィールドは 1 つのテーブルの文字データであり、もう 1 つの表の数値データである 2 つのテーブルを追加します。数値的 Employee_ID フィールドは文字データに変換され、2 つのフィールドはエラーなしで追加されます。 Employee_ID フィールドは文字データに変換され、2 つのフィールドはエラーなしで最後に追加されます。

ALLCHAR も指定されている場合、 ASCHAR は無視されます。

ALLCHAR

省略可能

文字データ カテゴリに最後に追加されるすべてのテーブルのすべての非文字フィールドを変換します。

この文字データへのグローバル変換により、すべて同じ名前のフィールドはエラーなしで最後に追加されます。

メモ

最後に追加後は、フィールドに含まれているデータに応じて、最後に追加されたフィールド全体のデータ カテゴリを変更することができます。

3 つの月次取引テーブルを最後に追加する

以下の例では、3 つの月次取引テーブルが追加され、それらのテーブル内のすべてのフィールドを追加した四半期取引テーブルが出力されます。

APPEND Trans_Jan, Trans_Feb, Trans_Mar TO Trans_Q1

3 つの従業員テーブルを最後に追加し、共通フィールドのみを含める

以下の例では、3 つの課員テーブルが追加され、それらのテーブル内の共通フィールドのみを追加したマスター従業員テーブルが出力されます。

APPEND Employees_central, Employees_east, Employees_west TO Employees_master COMMONFIELDS

3 つの従業員テーブルを最後に追加し、異なるデータ カテゴリのフィールドを一致させる

以下の例では、3 つの部門別従業員テーブルを最後に追加されており、そこでは、いくつかの同じ名前のフィールドは異なるデータ カテゴリを使用しています。

最初の例では、一致のために必要な場合のみ、非文字フィールドを文字データ カテゴリに変換しています:

APPEND Employees_central, Employees_east, Employees_west TO Employees_master ASCHAR

2 番目の例では、一致に必要かどうか関わらず、すべての非文字フィールドを文字データカテゴリに変換しています:

APPEND Employees_central, Employees_east, Employees_west TO Employees_master ALLCHAR

メモ

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

機能の仕組み

APPEND コマンドは、2 つ以上のテーブル内のレコードを追加した新しいテーブルを作成することで、それらのテーブル内のレコードを結合します。ここで、追加とはレコード グループを別のレコード グループの末尾に付加することです。

同じ物理名と同じデータ カテゴリを持つソース テーブル フィールドは、互いのフィールドに直接追加されます。

すべてのソース テーブルにおいて一意である物理名を持つフィールドは、出力テーブルには追加されますが、互いのフィールドには直接追加されません。

ヒント

名前が異なるフィールドを直接追加したい場合は、事前に各テーブル レイアウト内のフィールドの物理名を統一しておいてください(フィールドが同じデータ カテゴリに属しているか、ASCHAR または ALLCHAR を使用してフィールドのデータ カテゴリを一致させていると仮定します。)

APPEND の使用に適する場面

APPEND は、構造が同じまたは類似である複数のテーブル内のデータを結合したい場合に使用できます。たとえば、月次テーブルまたは四半期テーブルを年次テーブルに結合する場合に使用することをお勧めします。

ヒント

APPEND コマンドを 1 回実行しただけで、APPEND オプションを指定した EXTRACT コマンドの複数回の実行結果が置き換えられます。

JOIN や DEFINE RELATION の代替としては使用できない

APPEND は JOIN および DEFINE RELATION コマンドの代替としては使用できません。その理由は、共通キー フィールド内の一致する、または一致しない値に基づいてレコードを包含または除外することができないためです。APPEND では、すべてのソース テーブル内の全レコードが出力テーブルに追加されます。

類似性がまったくないテーブルの追加

類似性がまったくないテーブル、つまり共通のフィールドがない 2 つ以上のテーブルを追加することができます。類似性がないテーブルを追加することが分析目的に資する場合もあります(これは APPEND コマンドの意図した主な用途ではありませんが)。

日付時刻フィールドの追加

2 つ以上の日付時刻フィールドを追加するには、次の条件を満たす必要があります。

  • 物理名が同じ
  • データ カテゴリが同じ(日付時刻)
  • データ サブタイプが同じ(日付、日付時刻、時刻)
  • タイムゾーン インジケーターの使用有無の一致 – 追加対象となるすべてのフィールドで使用するか、使用しないかのいずれか

2 つの日付時刻フィールドが同じ名前を持っているが、その他の条件のいずれかを満たしていない場合には、エラー メッセージが表示され、APPEND コマンドは実行されません。

エラー メッセージには、APPEND で指定された全テーブルにおいて満たされなかったすべての条件が表示されます。このメッセージはコマンド ログに保存されます。

メモ

異なる日付時刻フィールドを文字データ カテゴリに変換してすることでこれらのフィールドを一致させ、それから最後に追加ことができます。このアプローチでは、データを 1 つのテーブルに結合することができます。ただし、ソース データの性質によっては、結合されたデータを日付時刻データに戻すことができない場合があります。

自動調整

次の場合、APPEND コマンドにより、フィールドを追加するために、フィールドが自動的に調整されます。

フィールドのデータ カテゴリ 調整の実行
文字
  • 異なるフィールド長は調整されます。
  • フィールドを ASCII または UNICODE データ型に変換することで、カスタム、PCASCII、EBCDIC など様々な文字データ型が調整されます。
数値
  • 異なるフィールド長は調整されます。フィールドは ACL データ型に変換されます。
  • 異なる小数点以下桁数が定義されている場合は、調整されます。小数点以下桁数は、必要に応じて数値の末尾にゼロが付加されて、最大の桁数に統一されます。フィールドは ACL データ型に変換されます。
  • フィールドを ACL データ型に変換することで、Print、Float、EBCDIC、Micro など複数のデータ型が調整されます。
日付時刻
  • フィールドを Analytics のデフォルト書式に変換することで、ソース データ内にある複数の日付書式、日付時刻書式、時刻書式が調整されます。
    • YYYYMMDD
    • YYYYMMDD hh:mm:ss
    • hh:mm:ss

自動調整が実行されない場合とは

次の場合、フィールドは Analytics によって自動調整されません。エラー メッセージが表示され、追加操作は実行されません。

  • 名前が同じ 2 つのフィールドが異なるデータ カテゴリに属する
  • 名前が同じ 2 つの日付時刻フィールドが異なる日付時刻サブタイプ(日付、日付時刻、時刻)に属する
  • 名前が同じ 2 つの日付時刻フィールドにおいて、タイムゾーン インジケーターの使用有無が一致していない

メモ

同じ名前で異なるデータ カテゴリのフィールドのユーザー指定の一致については上記で説明されています。詳細については、ASCHARALLCHARを参照してください。

演算フィールドがサポートされていない

APPEND コマンドでは、演算フィールドの追加がサポートされていないためです。テーブルを追加する場合、ソース テーブル内のすべての演算フィールドは自動的に出力テーブルから除外されます。

あるソース テーブル内の演算フィールドが、別のソース テーブル内の物理フィールドと同じ名前を持っている場合には、エラー メッセージが表示され、APPEND コマンドは実行されません。

ヒント

演算フィールドを追加するには、まずこのようなフィールドを抽出して、物理フィールドに変換します(詳細については、EXTRACT コマンドを参照してください)。次に、演算フィールドの抽出先となったテーブルを追加操作で使用します。

別のアプローチとしては、追加された出力テーブルに演算フィールドを再作成します。

レコード ノート フィールドがサポートされていない

APPEND コマンドでは、レコード ノート フィールドの追加がサポートされていないためです。テーブルを追加する場合、ソース テーブル内のすべてのレコード ノート フィールドは自動的に出力テーブルから除外されます。

あるソース テーブル内のレコード ノート フィールドが、別のソース テーブル内の物理フィールドと同じ名前を持っている場合には、エラー メッセージが表示され、APPEND コマンドは実行されません。

レコード ノート フィールドは、レコードにノートを追加したときに Analytics によって自動的に生成されるものです。

レコード長

追加時にすべてのソース テーブル内の全フィールドを含めるには、出力テーブルのレコード長がソース テーブル内の最も長いレコードより長くなる可能性があります。

出力テーブルのレコード長が Analytics の上限である 32 KB を超えると、エラー メッセージが表示されます。

追加と小数点以下桁数

小数位がある数値フィールドの追加は、特定の動作によって制御されます。

小数位設定

APPEND コマンドでは、テーブル レイアウトのフィールド定義にある小数位設定に定義された小数点以下桁数が使用されます。

メモ

小数位設定は、ソース データ内の実際の小数点以下桁数とは同じでない場合があります。小数位設定を超える小数点以下桁数は未定義のため、計算では丸められます。

統一されていない小数位設定

追加された数値フィールドの小数位設定が統一されていない場合には、それらのフィールドは ACL データ型に変換され、最も長い小数位設定に自動的に調整されます。

最も長い小数位設定を超えるソース データ ファイル内の小数点以下桁数は、APPEND で生成される出力テーブルから除外されます。

統一されている小数位設定

追加された数値フィールドの小数位設定が統一されている場合には、データ型変換も調整も行われません。

小数位設定を超えるソース データ ファイル内の小数点以下桁数は、APPEND で生成される出力テーブルに追加されます。

並べ替え

ソース テーブルに存在するすべての並べ替え順は、出力テーブル内のそれぞれのレコード セットで別々に保持されます。

たとえ両方のテーブルのレコードが並べ替えられていても、結果として生じる結合されたテーブルは、並べ替えられていないテーブルと見なされます。これは、抽出されたレコードを出力先テーブルの末尾にグループとして追加するときに、出力先テーブルの既存の並べ替え順が何も考慮されないからです。

たとえば、月次または四半期テーブルを追加して年次テーブルを作成する場合は、月次または四半期データの内部並べ替えは保持されます。必要であれば、追加操作を実行した後で、出力テーブルを並べ替えることもできます。

フィールドの順序の使用方法

共通フィールド

ソース テーブルの共通フィールドは、同じ順序になっていなくても追加できます。

たとえば、以下のフィールドは順序が異なっていても正常に追加されます。

テーブル フィールド
テーブル1 ラストネーム | ファーストネーム | ミドルネーム
テーブル2 ファーストネーム | ミドルネーム | ラストネーム

出力テーブル内でのフィールドの順序は、APPEND コマンドに指定した最初のテーブルによって決まります。したがって、上の例では、出力テーブルの順序は次のようになります。

  • ラストネーム | ファーストネーム | ミドルネーム

共通でないフィールド

ソース テーブル内の共通でないフィールドは、選択したテーブル グループに出現している順に出力テーブルに出力されます。

たとえば、以下の 2 つのテーブルを追加する場合を考えます。

テーブル フィールド
テーブル1 役職 | ラストネーム | ファースト ネーム | ミドルネーム
テーブル2 ファーストネーム | ミドルネーム | ラストネーム | 生年月日

出力テーブルでの順序は次のようになります。

  • 役職 | ラストネーム | ファーストネーム | ミドルネーム | 生年月日

代替列見出し

ソース テーブルの代替列見出しは、出力テーブルにも出力されます。複数のソース テーブルで同じフィールドに代替列見出しがある場合は、最初に選択したテーブルの代替列見出しが優先的に出力されます。