R FNC関数 - 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/rin1593638965306.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1147
Product Category
Software
Teradata Vantage

Rテーブル演算子は通常、データベースに格納されているデータに対しアクセスおよび変更を行ない、割り当てられているタスクを実行します。

以下のセクションに、Rテーブル演算子開発者に使用可能なFNC関数について説明します。これらの関数では、Rスクリプトでデータベースからのデータおよびメタデータに対しアクセスおよび更新を行なうインターフェースが提供されています。

Rは整数値をdoubleとして読み取ります。そのため、as.integer()またはその他のメソッドを使用して、その値を整数にキャストする必要があります。これを行なわないと、データ型不一致エラーが発生することがあります。

以下のカテゴリの関数が提供されています。

データ操作のための関数

テーブル演算子の場合、入力ストリームと出力ストリームの行には、以下のようなイテレータ モデルに従ってアクセスします。

  1. 入力ストリームと出力ストリームをオープンします。
  2. 入力ストリームの行を順次読み取ります。
  3. 現在の入力行の列に直接アクセスします。
  4. 現在の出力行の列を更新します。
  5. 出力行を順次書き込みます。
  6. ストリームをクローズします。

以下の関数はイテレータ モデルをサポートし、入力ストリームと出力ストリームの操作に使用されます。これらの関数により、データベースのデータへのアクセスおよび変更が可能になります。関数は、入力ストリームと出力ストリームの書式の指定を設定および取得することもできます。

C保護モードのテーブル演算子と同様に、バッファは行の読み取りと書き込みに使用されます。読み取り行が発行されると、行の全体のバッファが読み取られ、次の読み取り行の発行時にそのバッファから行が取得されます。バッファの最後に達すると、新しいバッファが読み取られます。同様に、バッファは書き込みに使用されます。バッファのサイズは構成可能で、cufconfig GDO(CServerMemSize)で設定できます。

機能 説明
tdr.Open 入力ストリームまたは出力ストリームをオープンします。
tdr.Close 入力ストリームまたは出力ストリームをクローズします。
tdr.Read 入力ストリームから行を読み取ります。
tdr.Write 出力ストリームに行を書き込みます。
tdr.TblRead 入力ストリームをRデータ フレームに読み取り、データ フレームを返します。
tdr.TblWrite Rデータ フレームを出力ストリームに書き込みます。
tdr.GetAttributeByNdx 現在の入力ストリーム行から個々の属性を取得します。
tdr.SetAttributeByNdx 現在の出力ストリーム行の個々の属性の値を設定します。
tdr.GetStreamCount 入力ストリームと出力ストリームの数を取得します。
tdr.GetFormat 指定ストリームの書式に関する情報を取得します。
tdr.SetFormat 指定ストリームに対して書式の属性を設定します。
tdr.DisableCoGroup 複数の入力ストリームを処理するテーブル演算子のcogroup機能を無効にします。

メタデータ操作のための関数

テーブル演算子の場合、問合わせ呼び出し時に渡される一部のメタデータには、コントラクト関数と演算子からアクセスできます。このメタデータは、問合わせの一部として指定されなかった場合は、コントラクト関数で設定できます。また、コントラクト関数は、演算子の実行にアクセス可能なコンテキストを設定できます。

以下の関数は、このメタデータおよび契約コンテキストのアクセスと設定に使用されます。

機能 説明
tdr.GetColCount ストリーム中の列数を取得します。
tdr.GetColDef 入力や出力ストリームのスキーマを取得します。
tdr.SetOutputColDef 出力ストリームのスキーマを設定します。
tdr.GetCountHashBy 指定入力ストリームのHASH BY句内の列数を取得します。
tdr.GetHashByDef 指定入力ストリームに対しHASH BY句の列を取得します。
tdr.SetHashByDef 指定入力ストリームに対しHASH BY指定を設定します。
tdr.GetCountLocalOrderBy 指定する入力ストリームのLOCAL ORDER BY句内の列数を取得します。
tdr.GetLocalOrderByDef 列の並べ替え、NULLS FIRST/NULLS LAST標識を含む、指定入力ストリームのLOCAL ORDER BY句の列を取得します。
tdr.SetLocalOrderByDef 指定入力ストリームに対し整列指定を設定します。
tdr.GetContractLength 契約コンテキストの長さを取得します。
tdr.GetContractDef 契約コンテキストを取得します。
tdr.SetContractDef 契約コンテキストを設定します。
tdr.GetAsClauseName 指定ストリームに対して別名(AS name)および関連付けられている長さを取得します。
tdr.IsDimension ストリームがDIMENSION入力ストリームかどうかを確認します。
tdr.SetError テーブル演算子を起動する問合わせが実行され、エラーが発生した場合にコンソールに表示されるエラー コードおよびメッセージを設定します。

USING句パラメータにアクセスするための関数

USING句を使用して、パラメータをキー値ペアとしてコントラクト関数およびテーブル演算子に渡すことができます。以下の関数は、コントラクト関数およびテーブル演算子のこれらのペアにアクセスするために使用されます。

機能 説明
tdr.GetCustomKeyCount USING句のキー数を取得します。
tdr.GetCustomValuesOf 指定キーと関連付けられている値を取得します。
tdr.GetCustomValuesAt 指定インデックスのキーと関連付けられている値を取得します。
tdr.GetCustomKeyAt 指定インデックスのキーを取得します。

LOB操作のための関数

以下の関数は、Rテーブル演算子からのLOBに対するアクセスと変更に使用されます。これらの関数を使用して、Rテーブル演算子は入力ストリームからLOBを読み取り、出力ストリームに対しLOBを作成できます。

機能 説明
tdr.LobOpen_CL 読み取るLOBをオープンします。
tdr.LobClose 入力LOBをクローズします。
tdr.GetLobLength 入力LOBの長さを取得します。
tdr.LobRead LOBを読み取ります。
tdr.LobCol2Loc データを現在の出力行のLOBに追加するために必要な出力LOBロケータを計算します。
tdr.LobAppend 生データを指定出力ロケータと関連付けられている出力LOBの最後に追加します。

列定義を設定するための関数

以下の関数は、サポート対象の各データ型のリストを生成するために使用されます。これらのリストをtdr.SetOutputColDef関数に渡すことができます。これによりリストを迅速かつ効率的な方法で定義できるようになり、tdr.SetOutputColDefへの呼び出しで使用される各リストおよびすべてのリストを明示的に定義する必要がなくなります。

一部の関数は、特定のデータ型に必要なデフォルトの属性を返すだけです。その他の関数は、長さや文字型などのデータ型に関する特定のプロパティを、関数に渡されたパタラメータに基づいて示します。

文字データ型とCLOBデータ型
機能 説明
tdr.Char CHAR_DTデータ型の列定義を取得します。
tdr.VarChar VARCHAR_DTデータ型の列定義を取得します。
tdr.Clob CLOB_REFERENCE_DTデータ型の列定義を取得します。
BYTEデータ型とBLOBデータ型
機能 説明
tdr.Byte BYTE_DTデータ型の列定義を取得します。
tdr.VarByte VARBYTE_DTデータ型の列定義を取得します。
tdr.Blob BLOB_REFERENCE_DTデータ型の列定義を取得します。
数値型データ型
機能 説明
tdr.ByteInt BYTEINT_DTデータ型の列定義を取得します。
tdr.SmallInt SMALLINT_DTデータ型の列定義を取得します。
tdr.Integer INTEGER_DTデータ型の列定義を取得します。
tdr.BigInt BIGINT_DTデータ型の列定義を取得します。
tdr.Decimal1 DECIMAL1_DTデータ型の列定義を取得します。
tdr.Decimal2 DECIMAL2_DTデータ型の列定義を取得します。
tdr.Decimal4 DECIMAL4_DTデータ型の列定義を取得します。
tdr.Decimal8 DECIMAL8_DTデータ型の列定義を取得します。
tdr.Decimal16 DECIMAL16_DTデータ型の列定義を取得します。
tdr.Float REAL_DTデータ型の列定義を取得します。
tdr.Real REAL_DTデータ型の列定義を取得します。
日付/時刻データ型と間隔データ型
機能 説明
tdr.Date DATE_DTデータ型の列定義を取得します。
tdr.Time TIME_DTデータ型の列定義を取得します。
tdr.TimeWTZ TIME_WTZ_DTデータ型の列定義を取得します。
tdr.Timestamp TIMESTAMP_DTデータ型の列定義を取得します。
tdr.TimestampWTZ TIMESTAMP_WTZ_DTデータ型の列定義を取得します。
tdr.IntervalYear INTERVAL_YEAR_DTデータ型の列定義を取得します。
tdr.IntervalYTM INTERVAL_YTM_DTデータ型の列定義を取得します。
tdr.IntervalMonth INTERVAL_MONTH_DTデータ型の列定義を取得します。
tdr.IntervalDay INTERVAL_DAY_DTデータ型の列定義を取得します。
tdr.IntervalDTH INTERVAL_DTH_DTデータ型の列定義を取得します。
tdr.IntervalDTM INTERVAL_DTM_DTデータ型の列定義を取得します。
tdr.IntervalDTS INTERVAL_DTS_DTデータ型の列定義を取得します。
tdr.IntervalHour INTERVAL_HOUR_DTデータ型の列定義を取得します。
tdr.IntervalHTM INTERVAL_HTM_DTデータ型の列定義を取得します。
tdr.IntervalHTS INTERVAL_HTS_DTデータ型の列定義を取得します。
tdr.IntervalMinute INTERVAL_MINUTE_DTデータ型の列定義を取得します。
tdr.IntervalMTS INTERVAL_MTS_DTデータ型の列定義を取得します。
tdr.IntervalSecond INTERVAL_SECOND_DTデータ型の列定義を取得します。

Rテーブル演算子を開発するための追加関数

Rテーブル演算子の開発時には、以下の追加関数も有用である場合があります。

機能 説明
tdr.ampinfo テーブル演算子が実行されているAMPおよびノードに関する情報を返します。
tdr.dbsinfo ユーザー アカウントやユーザー名など、現在実行しているテーブル演算子またはコントラクト関数に関する情報を返します。
tdr.getnodedata すべてのオンラインAMP vprocについてノードIDとAMP IDを返し、テーブル演算子が特定のAMP上で実行するための自己構成を行なえるようにします。
tdr.tracestring SET SESSION FUNCTION TRACE文で設定されたトレース文字列の現在の設定を返します。
tdr.tracewrite CREATE GLOBAL TEMPORARY TRACE TABLE文によって定義された一時トレース テーブルにトレース出力を書き込みます。

前提条件

これらの関数を呼び出す前に、以下の文をRスクリプトに含め、TDRパッケージをロードする必要があります。

library(tdr)

用語

Rタイプにはスカラー タイプは含まれません。整数などのスカラー タイプは通常、特定のタイプ(整数)の単位ベクトルとして表わされます。以下のセクションで、タイプの単位ベクトルはタイプのみで指定されます。例えば、整数と文字はそれぞれ、整数の単位ベクトル、文字の単位ベクトルを示します。複数の要素を持つベクトルは、整数ベクトルなどのタイプ ベクトルとして指定されます。