In-Database計算

サポートされているデータベース管理システム(DBMS)内のテーブルとしてDATA=入力データセットが格納される場合、FREQプロシジャはIn-database計算を使用して度数表やクロス集計表を作成します。サポートされているデータベースには、Teradata、UNIX環境のDB2、Oracleがあります。In-Database計算を行うことで、より高速な処理を実現し、データベースとSASソフトウェア間のデータ転送量を削減できます。In-Database計算の詳細は、SAS/ACCESS 9.2 for Relational Databases: Referenceの"In-Database Procedures"のセクションを参照してください。

FREQプロシジャは、SQLの明示的パススルーを使用することでIn-Database計算を実施します。同プロシジャは、ユーザがTABLESステートメントで要求した表に基づいてSQLクエリを生成します。データベースは、これらのSQLクエリを実行することで、初期要約テーブルを構築します。続いて、この要約テーブルはFREQプロシジャへと送信されます。同プロシジャは、この要約テーブルを使用することで、残りの分析やタスクを通常通り(すなわち、データベースの外で)実行します。In-Database計算では、ネットワークを介してデータベースとSASシステム間でデータセット全体をやり取りするのではなく、要約テーブルのみをやり取りします。これにより、要約テーブルの次元数(行と列の数)がデータベーステーブル全体の次元数(個々のオブザベーション数)よりもはるかに小さい場合に処理時間を大幅に削減できます。また、In-Database要約は、効果的な並列処理を使用することで、性能の向上も実現できます。

In-Database計算を制御するには、LIBNAMEステートメントまたはOPTIONSステートメントでSQLGENERATIONオプションを使用します。SAS/ACCESS 9.2 for Relational Databases: Referenceの"In-Database Procedures"のセクションには、SQLGENERATIONオプションおよびその他のオプションの詳しい説明があります。デフォルトでは、FREQプロシジャは可能な限りIn-database計算を使用します。FREQプロシジャには、In-Database計算を制御するオプションはありません。

FREQプロシジャはフォーマットされた値を使用して、度数表やクロス集計表の各レベルへとオブザベーションをグループ化します。詳細は、出力形式を使用したグループ化のセクションを参照してください。出力形式がデータベース内で利用可能な場合、in-database要約ではその出力形式を使用します。出力形式がデータベース内で利用できない場合、in-database要約は生データに基づいて行われ、FREQプロシジャが最終的にフォーマットされた分類を(データベース外で)実施します。詳細は、SAS/ACCESS 9.2 for Relational Databases: Referenceのセクション"Deploying and Using SAS Formats in Teradata"を参照してください。

オブザベーションの順番は、DBMSテーブルでは本質的に定義されません。次に示すオプションはオブザベーションの順番に関連するものであるため、In-Database計算を行うFREQプロシジャでは指定できません。

  • FIRSTOBS=またはOBS=データセットオプションを指定すると、FREQプロシジャはIn-Database計算を実行しません。

  • BYステートメントでNOTSORTEDオプションを指定すると、FREQプロシジャのIn-Database計算は同オプションを無視し、BY変数に関してデフォルトの昇順を使用します。

  • DBMSテーブルの入力データに対してORDER=DATAオプションを指定すると、FREQプロシジャは、同じ分析の個々の実行で異なる結果を生成する場合があります。クロス集計表の表示で変数の順番を決定することに加えて、ORDER=オプションを使うと、FREQが計算する多くの検定統計量や指標の値に対して影響を与えることもできます。