FETCHコマンドは、SQLによるアナリティック・ワークスペース・データへのアクセス時に使用するOLAP_TABLE
ファンクションで作成されるリレーショナル表での使用を目的として、アナリティック・ワークスペース・データを取得する方法を指定するコマンドです。
FETCHコマンドは、OLAP_TABLE
ファンクションのOLAP_commandパラメータでのみ使用できます。それ以外のコンテキストでは使用できません。
OLAP_TABLE
ファンクション内で、FETCHキーワードは、アナリティック・ワークスペース・データが表オブジェクトにマッピングされる方法を明示的に指定します。FETCHキーワードは、Oracle Databaseに移植するOLAPアプリケーション用に提供されています。
注意: SNAPIのFETCHコマンドを使用していたOLAPアプリケーションをアップグレードする場合にのみ、OLAP_TABLEでFETCHキーワードを使用します。OLAPアプリケーションをアップグレードする場合、構文はOLAP Server 6.3と同じです。前に使用していたのと同じFETCHコマンドを使用できます。 |
OLAP_TABLE
の引数としてFETCHを使用する場合、改行や継続マークを付けずに、文全体を1行で入力する必要があります。
OLAP DMLに埋め込まれたSQLコマンドを使用してリレーショナル表からアナリティック・ワークスペース・オブジェクトにデータをフェッチまたはインポートするには、OLAP DML SQLコマンドを使用します。
構文
FETCH expression...[TAG tag-exp] [LABELED] [data-order]
ここで、data-orderは次のいずれかです。
引数
各ターゲット列の式。行定義に現れるのと同じ順序。式は空白またはカンマで区切ります。
このキーワードは無視されます。下位互換性のためにのみ構文に残されています。
このキーワードは無視されます。下位互換性のためにのみ構文に残されています。すべてのフェッチにラベルが付けられます。
<order-dim...>に指定されるディメンション・リストに従ってデータ・ブロックを順序付けます。山カッコで囲んでディメンションまたはコンポジット、あるいはその2つの組合せを指定します。複数のディメンションは、最初のディメンションが最も変化の速いディメンションとなり、最も変化の速いディメンションから最も変化の遅いディメンションという順序になります。USING句を指定すると、ACROSSおよびDOWNを指定できません。
列および行のデータ・ブロックを順序付け、列ディメンションを指定します。across-dimには、1つ以上のディメンション、コンポジット、NONEキーワード、あるいはこれらの組合せのリストを指定します。複数のACROSSディメンションを指定すると、最初のディメンションが最も変化の遅いディメンションとなり、最も変化の遅いディメンションから最も変化の速いディメンションへと変化します。
DOWNではなくACROSSを指定した場合、指定されないディメンションはすべて、デフォルトでDOWNディメンションに設定され、オブジェクト定義の順序で最も変化の速いディメンションから最も変化の遅いディメンションへと変化します。ただし、NONEキーワードをACROSSディメンション・リストに追加すると、指定されないDOWNディメンションのステータスにある最初の値のみがフェッチされます。
ACROSS句を指定すると、USING句を指定できません。
列および行のデータ・ブロックを順序付け、行ディメンションを指定します。down-dimには、1つ以上のディメンション、コンポジット、NONE
キーワード、あるいはこれらの組合せのリストを指定します。複数のDOWN
ディメンションを指定すると、最初のディメンションが最も変化の遅いディメンションとなり、最も変化の遅いディメンションから最も変化の速いディメンションへと変化します。
ACROSSではなくDOWNを指定した場合、指定されないディメンションはすべて、デフォルトでACROSSディメンションに設定され、オブジェクト定義の順序で最も変化の速いディメンションから最も変化の遅いディメンションへと変化します。ただし、NONEキーワードをDOWNディメンション・リストに追加すると、指定されないACROSSディメンションのステータスにある最初の値のみがフェッチされます。
DOWN句を指定すると、USING句を指定できません。
注意
デフォルトのデータの順序
USINGまたはDOWN/ACROSS句を指定しない場合、データのディメンションはワークスペースのオブジェクト定義のリストの順序で最も変化の速いディメンションから最も変化の遅いディメンションへと変化します。
ディメンション性が異なる複数の式の使用方法
ディメンション性が異なる複数の式を1つのFETCHコマンドで指定した場合、最も変化の速いディメンションから最も変化の遅いディメンションへと変化するディメンションの順序は予測できません。
データ・ブロックの最大サイズ
MAXFETCHを使用して、FETCHによって生成されるデータ・ブロックのサイズに上限を設定できます。
コンポジットで定義された変数
コンポジットで定義された変数の場合、FETCHのACROSS、DOWNおよびUSING句で、ベース・ディメンションのかわりにコンポジットを指定できます。これにより、結果のデータ・ブロックでNAフィールド数を最小限にすることが可能です。変数が名前付きコンポジットで定義されている場合、USING、DOWNまたはACROSSキーワードの後にそのコンポジットの名前を指定できます。名前のないコンポジットは、それを定義するために使用した構文で指定します。たとえば、変数d.salesの定義が次の場合、
DEFINE d.sales VARIABLE DECIMAL <month SPARSE<product district>>
USING、DOWNまたはACROSSキーワードの直後に式SPARSE<product district>
を指定することによってフェッチできます。
コンポジットによってディメンション化された変数のパフォーマンスについてのヒント
デフォルトでは、FETCHが明示的にコンポジットをループ処理する場合、コンポジットのベース・ディメンションにおける値の現行の順序に従ってコンポジットの値がソートされます。ソートの作業には一定の処理時間が必要なため、変数が大きい場合はパフォーマンスに影響することがあります。変数が非常に大きい場合に、生成されるFETCH出力の順序よりもパフォーマンスを重視する場合は、SORTCOMPOSITEオプションをNOに設定します。
例
OLAP_TABLE
でのFETCHの使用例は、例A-9「OLAP_TABLEでFETCHを使用するスクリプト」を参照してください。