使用上の注意

Teradata® Database JSONデータ型

brand
Software
prodname
Teradata Database
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN
断片化するデータの文字セットが次の場合:
  • LATIN: JSON_SHRED_BATCHプロシージャを使用
  • UNICODE: JSON_SHRED_BATCH_Uプロシージャを使用

データの文字セットの違いを除いて、2つのプロシージャの機能は同じです。

JSON値をシュレッドして CHAR、VARCHAR、またはVARBYTEの列を生成する場合、値のサイズがターゲット列のサイズより大きいと、値が列に合わせて切り捨てられます。

JSON_SHRED_BATCHの問合わせは、ソースJSONインスタンスとソース データがロードされるテーブルとの間に柔軟性をもたらします。この柔軟性によって、問合わせそのもの、およびマッピング(断片化された文)の実行方法に応じて、効率的な問合わせと非効率的な問合わせを実行できます。

次のガイドラインは、これらのプロシージャで最適なパフォーマンスを達成できるように支援します。
  • 行式列式に基づいて、JSONオブジェクトを一時テーブルに断片化するために、断片化された文ごとに、JSON_TABLE関数の呼び出しが行なわれます。結果として生成された一時テーブルを使用して、ユーザーが適切な権限を持つテーブルの列に値を割り当てることができます。最適なパフォーマンスを発揮する問合わせによって、マッピングが最適化されるので、各断片化された文は最大限の数の テーブルを更新します。マッピングの複雑さ(階層関係など)によってシュレッディングを実際の列にマップできない場合にだけ、別の断片化された文を問合わせに含めてください。
  • パフォーマンスは大部分が、プロシージャの使用方法によって決まります。マッピングによって、必要な個々の問合わせの数が最小限になると、パフォーマンスは最大限になります。必ずしも、すべてを断片化された文に含めることができるとは限りません。そのため、複数の文が許可されています。
  • このプロシージャでは、INSERT、UPDATE、MERGE、およびDELETE操作が許可されます。これらの操作は、文のメタデータ部分の操作の部分に指定できます。メタデータ文のキーは、行式/列式で作成された一時テーブルとターゲット テーブルとの間の結合を実行するために使用されます。パフォーマンスに大きな影響が及ぶため、この処理は慎重に行なってください。MERGE操作では、ターゲット テーブルにプライマリ インデックスが作成されていて、プライマリ インデックスはメタデータのキーのメンバーになっている必要があります。
  • テーブルの完全な結合を避けるには、結合条件がID列から作成できるように、そのID列を入力問合わせパラメータに指定する必要があります。

ターゲット テーブルの列には、行式と列式、定数、またはSQL式の結果によって作成される一時テーブルの値を割り当てることができます。SQL式を使用する場合は、適切なSQL文(構文および問合わせの実際の結果の点で)を実行依頼する必要があります。これは、ターゲット テーブルのデータを操作する上で強力かつ柔軟な方法ですが、問合わせを適切に構成しないと問題が生じることがあります。DBSによって報告される、SQL式が原因のエラーはユーザーに報告され、問合わせは失敗します。行式と列式によって作成された一時テーブルの列、入力問合わせによって作成された余分の列は、SQL式で使用することができます。

シュレッディングの処理中、断片化された文それぞれで揮発テーブルが作成されます。テーブルの列は最大2048列まで可能ですが、すべてのテーブル マッピングの列を全部合わせたときに、2044列を超えないようにしてください(4つの内部列があります)。1個からN個のターゲット テーブルを持つことができ、各テーブルには1個からN個の列を指定できますが、すべての列の合計は2044列を超えることはできません。

断片化された文のキーワードはすべて小文字で指定する必要があります。

一時列に割り当てられた名前(temp_column_name)、および入力問合わせによって作成された余分の列の名前は固有である必要があります。これらはtable expression句で参照できるので、曖昧にはできません。名前は大文字と小文字が区別されないことに留意してください。固有でない名前が検出されると、エラーが報告されます。例えば、col1とCOL1は、内部問合わせで使用され、固有ではないので失敗します。
keys句に指定されるすべての名前をcolumn assignment句に含める必要があります。

column expressionの出力テーブルで一時列のデータ型を指定する必要があります。データが適切に解釈され、ターゲット テーブルで使用できるように、この情報を指定することが必要です。

JSONIDROWINDEX (大文字または小文字)はキーワードです。 これらはそれぞれ、入力JSON文書IDの値(input queryの最初の列)と入力行のインデックス番号を追跡するために使用されます。 JSONIDROWINDEXは固定された一時列名なので、colexprqueryexprで許可されません。 これらのキーワードをこれらの句で使用すると、構文エラーが報告されます。 ただし、シュレッディング操作のソース値として、table expression句で参照されることがあります。