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

CROSSTAB コマンド

2 つ以上の文字または数値フィールドの値の等しい組み合わせに基づいてレコードをグループ化し、結果のグループを行と列のグリッドに表示します。各グループのレコード数をカウントし、指定した数値フィールドの小計をグループごとに求めます。

CROSSTAB <ON行フィールド <...n> COLUMNS 列フィールド <SUBTOTAL {数値フィールド <...n>|SUBTOTAL ALL> TO {SCREEN|テーブル名|ファイル名|GRAPH|PRINT} <IF テスト> <WHILE テスト> <FIRST 範囲|NEXT 範囲> <APPEND> <COUNT> <OPEN> <LOCAL> <HEADER ヘッダー テキスト> <FOOTER フッター テキスト>
名前 説明
ON 行フィールド <...n>

結果として生じる行列グリッドの行に使用する、フィールドまたは式。行の基準として、1 つ以上のフィールドや式を指定できます。

COLUMNS 列フィールド

結果として生じる行列グリッドの列に使用する、フィールドまたは式。列に使用するフィールドや式は、1 つしか指定できません。

SUBTOTAL 数値フィールド <...n> | SUBTOTAL ALL

省略可能

グループごとに小計を計算する 1 つ以上の数値フィールドまたは式。

複数のフィールドはスペースで区切る必要があります。テーブル内のすべての数値フィールドについて小計を求める場合は ALL を指定します。

TO SCREEN | テーブル名 | ファイル名 | GRAPH | PRINT

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

  • SCREEN は Analytics の表示領域に結果を表示します
  • テーブル名は、結果の保存先となる Analytics テーブルのことです。

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

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

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

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

    メモ

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

  • ファイル名は結果の保存先となるファイルです。

    ファイル名には、適切なファイル拡張子を付けた文字列を引用符で囲んで指定します。例:TO "Output.TXT"

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

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

    • TO "C:\Output.TXT"
    • TO "Results\Output.TXT"
  • GRAPH は結果をグラフに表示し、それを Analytics の表示領域に表示します
  • 印刷 – 通常使うプリンターに結果を送信します
IF テスト

省略可能

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

メモ

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

WHILE テスト

省略可能

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

メモ

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

FIRST 範囲 | NEXT 範囲

省略可能

処理するレコード数:

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

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

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

APPEND

省略可能

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

メモ

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

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

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

COUNT

省略可能

レコード数が列に挿入されます。カウントは、SUBTOTAL を使用する場合に便利です。

小計フィールドが何も選択されていない場合は、自動的にカウントが含められます。

OPEN

省略可能

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

LOCAL

省略可能

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

メモ

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

HEADER ヘッダーテキスト

省略可能

レポートの各ページの最上部に挿入されるテキスト。

ヘッダーテキストは引用符で囲んだ文字列として指定する必要があります。この値は、Analytics のシステム変数である HEADER の値よりも優先されます。

FOOTER フッターテキスト

省略可能

レポートの各ページの最下部に挿入されるテキスト。

フッターテキストは引用符で囲んだ文字列として指定する必要があります。この値は、Analytics のシステム変数である FOOTER の値よりも優先されます。

SUBTOTAL を使って売掛金(Ar)テーブルをクロス集計する

顧客番号(Customer_Number)フィールドと取引タイプ(Trans_Type)フィールドを基準にして売掛金(Ar)テーブルをクロス集計したいとします。また、取引金額(Trans_Amount)フィールドの値の小計も求めたいとします。

出力は顧客別にグループ化され、さらに各顧客内では取引タイプ別にグループ化されます。出力には、取引タイプごとに各顧客の総取引額が含まれます。

OPEN Ar
CROSSTAB ON Customer_Number COLUMNS Trans_Type SUBTOTAL Trans_Amount COUNT TO SCREEN

売掛金(Ar)テーブルをクロス集計することで重複取引を検出する

売掛金(Ar)テーブルから重複取引の証拠を検出したいとします。

これを行うには、売掛金テーブルを取引金額(Trans_Amount)フィールドと取引タイプ(Trans_Type)フィールドに基づいてクロス集計します。出力では、取引タイプごとに同一の取引額がグループ化され、カウントされます。

OPEN Ar
CROSSTAB ON Trans_Amount COLUMNS Trans_Type TO SCREEN

メモ

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

機能の仕組み

CROSSTAB は、2 つ以上の文字または数値フィールドの値で、同じ組み合わせを持つレコードをグループ化します。

出力には、ピボット テーブルと似た行と列で構成されるグリッドが含まれます。出力にはグループごとに 1 つの行と列の交差が含まれるほか、そのグループに属するソース テーブル内のレコードの数が含まれます。

並べ替えと CROSSTAB

CROSSTAB では、データは並べ替えられていてもいなくても処理できます。出力の行フィールド列フィールドは、どちらも自動的に昇順に並べ替えられます。

複数の行フィールドを指定した場合、フィールドは、最初に指定された行フィールドを 1 番目の並べ替えフィールドとして、入れ子の並べ替えを使用します。