SCRIPT - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL演算子およびユーザー定義関数

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/fsi1592016213432.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1210
Product Category
Software
Teradata Vantage

データベース内でユーザー インストールのスクリプト、またはLINUXコマンドを実行します。

SCRIPTテーブル演算子は、AWSやAzureなどのTeradata Vantage delivered as-a-serviceのユーザーにはデフォルトで利用できない設定です。有効にするには、Teradataのお客様窓口までお問い合わせください。

ANSI準拠

この文は、ANSI SQL:2011規格に対するTeradata拡張機能です。

構文

SCRIPT ( [ on_clause ] SCRIPT COMMAND ( runtime_literal_command )
  [ RETURNS ( { '*' | 'column_name data_type_specification' } [,...] ) ]
  [ DELIMITER ('delimiter_character') ]
  [ CHARSET ( { 'UTF-16' | 'LATIN' } ) ]
  [ QUOTECHAR ('quote_character') ]
  [ AUTH ('authorization_name') ]
  [ [AS] alias_name [( column_name [,...] )] ]
)

構文要素

on_clause
ON { table_name | view_name | ( query_expression ) }
  [ AS correlation_name ]
  [ hash_or_partition_by [ order_by | local_order_by ] ]
hash_or_partition_by
{ { HASH | PARTITION } BY [ order_by | local_order_by ][,...] |
  PARTITION BY ANY
}
order_by
ORDER BY order_by_spec [,...]
local_order_by
ORDER BY local_order_by_spec [,...]
order_by_spec
{ column_name | column_position | sort_expression } [ ASC | DESC ]
  [ NULLS { FIRST | LAST } ]
local_order_by_spec
localOrderByList [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
ON clause
SCRIPT関数にはON句を1つだけ含めることができます(単一入力)。ON句はオプションなし、または以下のオプションで指定することができます。
  • HASH BY
  • PARTITION BY
  • PARTITION BY ANY
  • オプションのORDER BY句またはLOCAL ORDER BY句
SCRIPT_COMMAND
実行するスクリプト。SCRIPT_COMMANDは必須キーワードです。
runtime_literal_command
SCRIPT_COMMANDへのパラメータは、その後にスクリプト名、その他の入力、またはオプションの有効なLINUXコマンドが続く実行可能名にすることができます。
RETURNS
オプションの句。
スクリプトによって返される出力列の名前と型。
*
SCRIPT関数によって入力テーブルのすべての列が返されるように指定します。
column_name data_type_specification
引用符内の情報。data_type_specificationは、サイズ、文字データ型などの適切な修飾子を持つ任意のTeradataデータ型です。
DELIMITER
オプションの句。delimiter_characterは、デフォルトでタブです。区切り文字は、入力文字列と出力文字列の列値を区切るために使用されます。
CHARSET
オプションの句。デフォルト値はLATINです。UTF-16を指定すると、 SCRIPTはユーザー インストールのスクリプトに渡されるデータとそこから渡されるデータのすべてにUTF-16文字エンコーディングを使用します。これはCHARまたはVARCHARをCHARACTER SET UNICODEとともに使用する場合に推奨されます。
QUOTECHAR

スクリプトへのすべての入力と出力が指定した文字を使用して引用されるように強制するオプションのパラメータ。

QUOTECHARを使用すると、データベースでNULLフィールドと空のVARCHARを区別できるようになります。長さがゼロのVARCHARは引用されますが、NULLフィールドは引用されません。

データに見つかった文字は、2番目の引用符文字によってエスケープされます。 例えば、

He said, "Hey there!"

二重引用符を含むQUOTECHAR("")の場合は、次のようになります。

"He said, ""Hey there!"""

AUTH

オペレーティング システムのユーザーを許可オブジェクトを介してスクリプトにバインドするオプションの句。

オプションのAUTH句をSCRIPTテーブル演算子と使用して、許可オブジェクトの完全修飾名を一重引用符で指定します。AUTH句は1つのみ指定できます。

データベース名を指定しない場合、名前は現在のユーザーまたはデータベースを使用して完全修飾します。

スクリプト クエリーを実行するデータベース ユーザーには、次のEXECUTE権限が必要です。
  • 指定された許可オブジェクトのEXECUTE権限。
  • td_sysfnlib.script上のEXECUTE FUNCTION。

データベース ユーザーは複数の許可と関連付けられる場合がありますが、使用する許可はAUTH句で指定されるものです。

許可における実行権限をロールに付与し、そのロールを使用してユーザー権限を割り当てることができます。許可オブジェクトはそれを作成するデータベース ユーザーに属しますが、そのデータベース ユーザーの所有者にも暗黙的に属します。所有者は、データベース ユーザーに代わり、許可オブジェクトにおけるEXECUTE権限をGRANTまたはREVOKEできます。

DEFAULT_AUTHと呼ばれる許可オブジェクトは、SYSUIFデータベースに対して作成されます。この許可を使用して、どのデータベース ユーザーがスクリプトをデフォルトのオペレーティング システム ユーザーtdatuserの下で実行できるかを制御します。この許可オブジェクトは、AUTH句でnoneを指定した場合に使用されます。正常に実行できるように、ユーザーにはSYSUIF.DEFAULT_AUTHオブジェクトに対して付与されるEXECUTE権限が必要です。

詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

AS
alias_nameまたはcolumn_nameの前にオプションで指定するオプション。
alias_name
table_name.column_name_aliasによって参照されるテーブルの別名。式の命名にも使用されます。
table_name
参照されるテーブルの名前。
view_name
参照されるビューの名前。
query_expression
参照されるビューの名前。
AS correlation_name
ON句入力テーブルのオプションの別名。
HASH BY
ON句の行はcolumn_specificationのハッシュ値に基づいてAMPに再配布されます。次に、ユーザー インストールのスクリプト ファイルが各AMPで一度実行されます。
PARTITION BY or PARTITION BY ANY

column_specificationの中に、または列指定のカンマ区切りのリストで、関数の実行対象のグループを指定(複数も可)。

PARTITION BYは任意指定です。PARTITION BY句を指定しない場合は、FROM句から送られる結果セット全体が単一のグループまたはパーティションになります。

PARTITION BY句は、ウィンドウ パーティション句と呼ばれることもあります。

ORDER BY
value_expressionの中の、グループまたはパーティション内の値のソート順序。
LOCAL ORDER BY
テーブル関数への入力に備えて、修飾された行を各AMPに対して順序付けします。
COLUMN SPECIFICATION
以下の2つの式から成るSQL式。
  • column_name
  • column_position
column_name, column_position
結合インデックス定義内の列の名前、またはその序数位置。
sort_expression
SQL式がソートされる順序。
ASC
結果が昇順でソートされます。
ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、昇順で整列します。
デフォルトの順序はASCです。
DESC
結果が降順でソートされます。
ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、降順でソートします。
NULLS FIRST
NULL結果が最初にリストされることを指定します。
NULLS LAST
NULL結果が最後にリストされることを指定します。