TD_JSONSHRED構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/uwa1591040057999.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage
[TD_SYSFNLIB.]TD_JSONSHRED(
  ON (json_document_retrieving_expr)
  USING 
      ROWEXPR(row_expr_literal) 
      COLEXPR(column_expr_literal [,...])
      RETURNTYPES(return_type [,...])
      [NOCASE(nocase_value)]
      [TRUNCATE(truncate_value)]
) [AS] correlation_name [(column_name [,...])]

構文要素

json_documents_retrieving_expr
少なくとも2つの列を返すクエリー式。
  • 最初の列は、行の識別子の役割を持ち、返されたテーブル内の行を特定の入力JSONドキュメント内のデータに関連付ける方法として機能します。また最初の列には、返されるテーブルのプライマリ インデックスとしての機能もあり、LOB以外のデータ型を使用できます。ベスト プラクティスは、各入力行に対して固有の値になるように設定し、関数によって処理される個別のJSONドキュメントに対応するようにすることです。

    この列は、変更されないまま、結果セットの最初の列としてTD_JSONSHREDにより返され(パススルーされ)ます。

  • 最後の列には、シュレッドするJSON文書が含まれます。

    データ型は、JSON、CLOB、VARCHARのいずれかです。CLOBでは、2GBまでのJSONドキュメントの入力が可能です。

json_documents_retrieving_exprは、最初のid列と最後のJSONドキュメント列の間に追加の列を返すことができます。これらの追加の列は関数によって渡され、TD_JSONSHREDによって入力値から変更されずに返されます。これらは、シュレッドされたJSONデータの列前の返されたテーブルに表示されます。
json_documents_retrieving_exprが結果を返さないかNULLを返す場合、TD_JSONSHREDは行のないテーブルを返します。
row_expr_literal
シュレッド対象のデータを含むJSONオブジェクトの識別子。TD_JSONSHREDは、特定されたオブジェクトの内容を、返される(出力)テーブルの行にシュレッドします。シュレッドされた複数のオブジェクトに同じ識別子がある場合、その内容は返されたテーブルの異なる行に返されます。
空の文字列は、TD_JSONSHREDが入力JSONドキュメントの内容全体をシュレッドする必要があることを示します。

row_expr_literalでは、入力JSONドキュメントの階層構造内でJSONオブジェクトを検索、特定するための完全なJSONPath表記法がサポートされません。代わりに、簡素化されたドット表記法を使用できます。

JSONPathとは異なり、この簡略化されたドット表記法では、外側レベルのオブジェクトを表すための$が使用されず、ワイルドカードや式もサポートされません。簡略化されたドット表記法では、JSONドキュメント内のオブジェクトと外部レベルの配列が識別されます。また、入れ子のJSONオブジェクトを識別できますが、配列内の特定のオブジェクトは識別できません。

column_expr_literal
シュレッドされたデータ内のJSONオブジェクトの識別子。オブジェクトの値は、返されるテーブルの列の値になります。デフォルトでは、オブジェクト識別子が列名として使用されます。シュレッドされたデータ内の複数のオブジェクトに同じ識別子がある場合は、その値は出力テーブルの複数行の列値になります。
空の文字列は、シュレッドされたデータ内のすべてのオブジェクトが単一列に返されることを意味します。

column_expr_literalでは、入力JSONドキュメントの階層構造内でJSONオブジェクトを検索、特定するための完全なJSONPath表記法がサポートされません。代わりに、簡素化されたドット表記法を使用できます。

JSONPathとは異なり、この簡略化されたドット表記法では、外側レベルのオブジェクトを表すための$が使用されず、ワイルドカードや式もサポートされません。簡略化されたドット表記法では、JSONドキュメント内のオブジェクトと外部レベルの配列が識別されます。また、入れ子のJSONオブジェクトを識別できますが、配列内の特定のオブジェクトは識別できません。

return_type
返された派生テーブル内のシュレッドされたJSONデータの列に割り当てられたデータ型。
  • 戻りタイプの数は、COLEXPRに指定された列の数に対応する必要があります。(元の入力テーブル内の非JSONデータのパススルー列は含まれません。)
  • 出力される型は、一重引用(アポストロフィ)で囲む必要があります。
  • 有効な出力データ型は、DECIMAL/NUMERIC、BYTEINT、SMALLINT、INTEGER、BIGINT、REAL、FLOAT、DOUBLE PRECISION、DATE、VARCHAR、CLOBです。
    シュレッドされたJSONデータの最大文字列サイズは16MBです。
  • 各型に対してフォーマット句を含めることができます。
  • 異なる型の出力が必要な場合は、任意の列をVARCHARとして出力し、それを別のデータ型にキャストできます。
  • VARCHAR型の列に指定する最大長は、シュレッドされたデータをその列に収容できるように指定する必要があります。
  • VARCHARおよびCLOBデータでは、デフォルトの出力文字セットが入力文字セットと一致します。
nocase_value
COLEXPRとROWEXPRの文字列照合で大文字と小文字が区別されるかどうかを決定します。指定される値は0または1です。
  • 0は、文字列照合で大文字と小文字が区別されることを意味します。0がデフォルトです。
  • 1は、文字列照合で大文字小文字は区別されないことを意味します。
truncate_value
対応するRETURNTYPE指定を超えるシュレッドされたデータがTD_JSONSHREDによってどのように処理されるかを決定します。指定される値は0または1です。
  • 0は、TD_JSONSHREDが処理に失敗しエラーが表示されることを意味します。エラーには問題のある列が示されます。
  • 1は、RETURNTYPE指定に一致するように切り捨てられたデータがTD_JSONSHREDによって返されることを意味します。1がデフォルトです。
correlation_name
TD_JSONSHREDによって返される派生テーブルの別名として使用される名前。
column_name
派生テーブル内の列の名前。列名を指定しないと、TD_JSONSHREDはJSONオブジェクト名を使用します。列名の数は、派生テーブル内の列数と一致する必要があります。
同じ名前のJSONオブジェクトから複数の列が出力される場合は、column_nameパラメータを使用して、出力された列に異なる名前を割り当てる必要があります。