使用上の注意 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/gzn1554761068186.ditamap
dita:ditavalPath
ja-JP/gzn1554761068186.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage
断片化するデータの文字セットが次の場合:
  • LATIN: JSON_SHRED_BATCHプロシージャを使用
  • UNICODE: JSON_SHRED_BATCH_Uプロシージャを使用

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

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

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

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

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