CONTEXT 句

CONTEXT 句を使用して、デフォルトで構成した値を無視することなく、特定のクエリが実行されるように構成設定を変更します。

一般的に、 CONTEXT 句は、コンマで区切られた キーと値 のペアを受け取ります。 キー は変更対象の実行特性の名前、 はその特性の新しい値です。このキーと値はどちらもリテラルであるため、引用符または二重引用符で囲んで記述する必要があります。キーでは大文字と小文字が区別されませんが、値ではプロパティに応じて大文字と小文字が区別されます。

CONTEXT 句の構文
<context information> ::=
    'cache' = { 'on' | 'off' }                   // 'on' by default
  | 'cache_atomic_operation' = { 'true' | 'false' } // 'true' by default
  | 'cache_invalidate' =
    { 'matching_rows' | 'all_rows' }   // 'matching_rows' by default
  | 'cache_invalidate_block_size' = <literal>          // 10000 by default
  | 'cache_load_on_error' = { 'true' | 'false' } // 'false' by default
  | 'cache_preload' = { 'true' | 'false' }       // 'false' by default
  | 'cache_return_query_results' = { 'true' | 'false' }  // 'true' by default
  | 'cache_wait_for_load' = { 'true' | 'false' }    // 'false' by default
  | 'costoptimized' = { 'on' | 'off' }           // 'on' by default
  | 'data_movement_bulk_load' = { 'on' | 'off' } // 'on' by default
  | 'data_movement_clean_resources' = { 'true' | 'false' } // 'true' by default
  | 'data_movement_clean_resources_on_error' = { 'true' | 'false' } // 'true' by default
  | 'i18n' = <literal> // e.g. 'es_euro', ...
  | 'nodelegateviews' = <literal>
  | 'queryTimeout' = <literal>
  | 'simplify' = { 'on' | 'off' } // 'on' by default
  | 'swap' = { 'on' | 'off' }
  | 'swapsize' = <number>
  | 'var <var name>' = <literal>
  | USERNAME = <literal>
  | PASSWORD = <literal> [ ENCRYPTED ]
  | DOMAIN = <literal>
  | DATAMOVEMENTPLAN = <data movement plan>
  | MPPMOVEMENTPLAN = <MPP movement plan>
  | SUBQUERYPLAN = <subquery plan>
  | VIEWPROPERTIES = <view properties>

<data movement plan> ::=
  [ <view name:identifier> : <data movement view plans> ]+

<data movement view plans> ::=
    <data movement view plan>
  | [ ( [ <data movement view plan> ] ) ]+

<data movement view plan> ::=
    JDBC <data source name:identifier>
  | OFF

<MPP movement plan> ::=
  [ <view name:identifier> : <MPP movement view plans> ]+

<MPP movement view plans> ::=
    <MPP movement view plan>
  | [ ( [ <MPP movement view plan> ] ) ]+

<MPP movement view plan> ::=
    ON
  | OFF

<subquery plan> ::=
  { ANY | HASH | MERGE | NESTED } { ORDERED | REVERSEORDER | ANY }

<view properties> ::=
  [ <view name:identifier> : ( <view property> [, <view property> ]* ) ]+

<view property> ::=
  'begindelimiter' = <literal>
  • cache: off の場合、このクエリでは、実行エンジンによってキャッシュエンジンが無効化されるので、データはソースから取得されます。

    on の場合は、ビューのキャッシュ構成を使用してクエリが実行されます。

    デフォルト値は on です。

    ビューのキャッシュを構成する方法の詳細については「 キャッシュの使用 」を参照してください。

  • cache_atomic_operation: デフォルトでは、キャッシュエンジンに関して、アトミックに実行される 2 つのタスクがあります。1 つは、キャッシュでデータを無効としてマークするタスクであり、もう 1 つは、キャッシュデータベースに格納されていることからデータを有効としてマークするタスクです。このパラメーターが false の場合、これら 2 つのタスクの操作はアトミックにはなりません。

    このパラメーターの詳細については、管理ガイドの「 大量のデータセットのキャッシュ 」を参照してください。

    デフォルト値: true

  • cache_invalidate: このパラメーターの動作は、ビューのキャッシュモードに応じて異なります。

    • 「部分」キャッシュのビューの場合、このパラメーターが matching_rows であれば、実行したクエリに関連付けられている「クエリパターン」は無効化され、データはソースから取得されてキャッシュに格納されます。

      たとえば、以下のクエリを実行するとします。

      1. SELECT * FROM V: 結果はソースから取得され、キャッシュに格納されます。

      2. SELECT * FROM V: 結果はキャッシュから取得されます。

      3. SELECT * FROM V CONTEXT  ('cache_invalidate' = 'matching_rows'): キャッシュされたデータは、「有効時間」に達していない場合でも無効化されます。結果はソースから取得され、キャッシュに格納されます。

        「部分」キャッシュのビューの場合、パラメーター ('cache_invalidate' = 'all_rows') は使用しないでください。「クエリパターン」の概念については、管理ガイドの「 キャッシュモジュール 」を参照してください。

    • 「全体」キャッシュのビューの場合、キャッシュには自動的には何もロードされません。 CONTEXT にパラメーター cache_preload を指定したクエリの結果をキャッシュにロードする必要があります。

      cache_invalidateall_rows の場合、ビューのキャッシュの内容が削除されてから、クエリの結果がキャッシュに格納されます。

      cache_invalidatematching_rows の場合、キャッシュの行のうち、クエリの WHERE 条件と一致する行のみが無効化されます。

      CONTEXT 句に cache_invalidate パラメーターを指定していない場合は、既存のデータは削除されずにクエリの結果がキャッシュに格納されます。

      このパラメーターの詳細については、管理ガイドの「 既存のデータを無効化してキャッシュをロードする 」を参照してください。

    デフォルト値: キャッシュされたデータの無効化なし。

  • cache_invalidate_block_size: ビューのキャッシュされたデータが非アトミックで無効になっている場合 (CONTEXT 句で 'cache_atomic_operation' = 'no' を指定している場合)、キャッシュされている行がブロック単位で無効化されます。このパラメーターでは、これらのブロックのサイズを設定します。

    このパラメーターの詳細については、管理ガイドの「 大量のデータセットのキャッシュ 」を参照してください。

    デフォルト値: 10000

  • cache_load_on_error: デフォルトでは、失敗したクエリの結果はキャッシュされません。 true を指定すると、失敗したクエリの結果もキャッシュされます。

    たとえば、和結合ビューを実行する場合に、和結合のブランチのいずれかが失敗しても、他のブランチで得られた結果はキャッシュされるようにするとします。そのためには、このパラメーターを true に設定して CONTEXT 句に追加します。

    デフォルト値: false

  • cache_preload: ビューのキャッシュモードが「全体キャッシュ」または「明示的なロードで部分キャッシュ」の場合は、キャッシュに手動でデータをロードする必要があります。このパラメーターの値が true の場合は、このクエリの結果がキャッシュに挿入されます。

    ビューのキャッシュモードが「全体キャッシュ」または「明示的なロードで部分キャッシュ」の場合にのみ使用します。

    デフォルト値: false

  • cache_return_query_results: false の場合、クエリは完全に処理されますが、データは返されません。

    ビューのキャッシュへのロードプロセスを迅速化する場合に、このパラメーターを使用します。

    詳細については、管理ガイドの「 Full モード 」を参照してください。

    デフォルト値: true

  • cache_wait_for_load: true の場合は、データが完全にキャッシュに格納されるまで、クエリは終了しません。このパラメーターは、キャッシュモードが「明示的なロードで部分キャッシュ」または「全体キャッシュ」であるビューのキャッシュにロードする場合に限り機能します。

    false の場合、クライアントがすべての行を受信したとき、それらの行がまだキャッシュに格納されていなくても、クエリが終了します。

    このパラメーターの詳細については、管理ガイドの「 Full モード 」を参照してください。

    デフォルト値: false

  • costoptimized: off の場合、実行エンジンによって「コストベースの最適化」が無効にされた状態でクエリの実行計画が計算されます。

    詳細については、管理ガイドの「 コストベースの最適化 」を参照してください。

    デフォルト値: on

  • DATAMOVEMENTPLAN: このパラメーターは、クエリの実行でのデータ移動を定義します。

    データ移動の詳細については、管理ガイドの「 データ移動 」を参照してください。そのサブセクションの「例」では、 DATAMOVEMENTPLAN パラメーターの使用例を紹介しています。

  • MPPMOVEMENTPLAN: このパラメーターでは、大規模な並行処理データベースへのビューのデータ移動を定義します。

    並行処理の概要およびこのパラメーターの使用例については「 並列処理 」を参照してください。

  • data_movement_bulk_load: このパラメーターが off になっていて、このクエリで実行エンジンによってデータ移動が実行される場合、実行エンジンではターゲットデータベースの一括ロード API が使用されません。

    デフォルト値: on

  • data_movement_clean_resourcesdata_movement_clean_resources_on_error 、および data_movement_clean_resources_on_error: これらのプロパティがデータ移動に及ぼす効果については、管理ガイドの「 データ移動を制御する CONTEXT 句のオプション 」を参照してください。

  • formatted: Virtual DataPort では、 CREATE VIEW ステートメントの書式設定がデフォルトでは保持されません。保持するには、ステートメントの CONTEXT 句にパラメーター 'formatted' = 'yes' を追加します。

    CREATE VIEW ステートメントがきわめて長いことから、読み取りやすいように書式設定し、その書式を保持する場合に、この機能が効果的です。

    派生ビューの VQL を手動で編集すると、このパラメーターが管理ツールによって自動的に追加されます。

  • i18n: クエリの結果のロケール構成。このパラメーターは、有効なロケール構成の名前を値として取得します (es_euro など)。

    例: 以下のステートメントは、このクエリについてのみ、ロケール構成を us_pst に設定して、ビュー V 設定からすべての行を取得します。

    SELECT *
    FROM V
    CONTEXT ('i18n' = 'us_pst')
    
  • noDelegateViews: クエリの実行でデータソースに委任されないビューの一覧。

    データの組み合わせをソースに委任できる場合でも、委任されないようにすることがあります (パフォーマンスが低下する場合やソースのリソースに制限がある場合など)。このような場合は、委任しないビューを指定できるようにすると便利です。

    たとえば、同じデータソースから作成した、JDBC の基本ビュー internet_incphone_inc の結合ビュー incidents があるとします。

    クエリ SELECT * FROM incidents を実行すると、データベースに JOIN クエリ SELECT * FROM phone_inc INNER JOIN internet_inc... が送信されます。

    SELECT * FROM incidents CONTEXT('nodelegateviews' = 'incidents') を実行すると、Virtual DataPort からデータベースに 2 つのクエリ SELECT * FROM phone_incSELECT * FROM internet_inc が送信されます。

  • QUERYTIMEOUT: Virtual DataPort サーバーがクエリの完了を待機する最長時間 (ミリ秒)。この時間が経過すると、Virtual DataPort サーバーによってクエリがキャンセルされます。

    JDBC または ODBC を介して Virtual DataPort に接続しているすべてのクライアントでは、クエリにデフォルトのタイムアウトを設定しています。このパラメーターを使用すると、そのデフォルトのタイムアウトを変更しなくても、クエリのタイムアウトを変更できます。

    0 を指定すると、クエリがキャンセルされなくなります。

  • simplify: on に設定していると、このクエリに対する自動的な簡素化が実行エンジンによって有効になります。 off に設定している場合は、自動的な簡素化は無効になります。

    詳細については、管理ガイドの「 クエリの自動簡素化 」を参照してください。

    デフォルト値: on

  • SUBQUERYPLAN: サブクエリのあるビューでは、サブクエリの CONTEXT 句に SUBQUERYPLAN パラメーターを追加することで、サブクエリのクエリプランを変更できます。詳細については、「 クエリの WHERE 句で使用するサブクエリ 」を参照してください。

  • swap: クエリに対してスワップが有効になっているかどうかを示します。クエリを実行中でも中間結果をスワップできることを指定する場合は、このパラメーターを ON に設定する必要があります。 OFF に設定すると、スワップはできません。詳細については、「 スワップポリシーの構成 」を参照してください。

  • swapSize: このクエリを実行することで取得される中間結果が、ディスクにスワップされずに到達できる最大サイズを示します。その最大サイズ (メガバイト単位) をパラメーターとして指定します。 SWAP ON オプションを指定している場合にのみ有効です。詳細については、「 スワップポリシーの構成 」を参照してください。

  • USERNAMEPASSWORDDOMAIN: これら 3 つのパラメーターは、 WITH PASS-THROUGH SESSION CREDENTIALS 句を使用して作成したデータソースであって、タイプが JDBC、Web サービス、BAPI、または多次元のデータソースでのみ考慮されます。Virtual DataPort サーバーとの接続に使用した資格情報以外の資格情報を使用してデータソースのビューにクエリを実行する場合は、これらのオプションを使用します。

    例: オプション WITH PASS-THROUGH SESSION CREDENTIALS を指定して JDBC データソースから view1 を作成し、以下を実行するとします。

    SELECT *
    FROM view1
    CONTEXT(USERNAME = 'admin', PASSWORD = 'd4GvpKA5BiwoGUFrnH92DNq5TTNKWw58I86PVH2tQIs/q1RH9CkCoJj57NnQUlmvgvvVnBvlaH8NFSDM0x5fWCJiAvyia70oxiUWbToKkHl3ztgH1hZLcQiqkpXT/oYd' ENCRYPTED)
    

    Virtual DataPort サーバーは、ユーザーが Virtual DataPort サーバーとの接続に使用した資格情報を無視し、ユーザー名 admin``とパスワード ``password を使用してビューのデータベースに接続します。

    トークン ENCRYPTED を追加して、必ず暗号化したパスワードを入力する必要があります。パスワードを暗号化するには、 ENCRYPT_PASSWORD ステートメントを実行します。以下に例を示します。

    ENCRYPT_PASSWORD 'my_secret_password';
    

    注釈

    DOMAIN は、NTLM 認証を使用する Web サービスがソースである場合にのみ使用します。

  • var: このパラメーターを使用して、関数 GETVAR を使用するビューの実行で使用する変数の値を設定します。コンテキスト変数の使用方法の詳細については、「 選択条件への変数の追加 (GETVAR および SETVAR) 」を参照してください。

    例: 以下のクエリは、最大収入が 1000000 であるクライアントを取得します。

    SELECT *
    FROM client
    WHERE income > GETVAR('_var_client_income_limit', 'int', 500000)
    CONTEXT('VAR _var_client_income_limit' = '1000000')
    
  • VIEWPROPERTIES: クエリツリーの一部を構成するビューの一連のプロパティを指定できます。このオプションでは、ビューに対する WRITE 権限が必要です。現時点でサポートされているパラメーターは begindelimiter のみです。このパラメーターを区切り形式データファイル (DF) の基本ビューに適用し、正規表現を使用して、区切り形式ソースファイルへのアクセスを開始する位置を動的に選択できます (DF データソースの説明と begindelimiter パラメーターの説明については、「 JSON ソース 」を参照してください)。 isdata も指定している場合、区切り文字はデータの一部であると見なされます。

    : 定義ツリー V の一部を構成する区切り形式ファイルタイプのデータソースに基づいて作成した DF 基本ビューを V2 とします。以下のステートメントでは、この区切り形式ファイルから、指定した正規表現に一致する最初のタプルを開始位置としてタプルを取得します (ここでは、文字列 05/24/2008 で始まるタプルが条件に一致します)。

    SELECT *
    FROM V
    CONTEXT (VIEWPROPERTIES = V2:('begindelimiter' = '05/24/2008(.*)' 'ISDATA'))
    

注釈

[View Properties] オプションは廃止されているので、新しいアプリケーションには使用できません。実行時に区切り形式ファイルデータソースの begindelimiter パラメーターに値を指定する必要がある場合は、そのようなパラメーターの値に補間変数を使用します (管理ガイドの「 補間変数によるパスなどの値 」を参照してください)。

注釈

これらのプロパティとは別に、クエリで指定するビューの選択条件変数に値を設定することもできます。変数を使用した選択条件については、付録「 選択条件への変数の追加 (GETVAR および SETVAR) 」を参照してください。