クエリーのSELECT文に、database_name.table_name@server_nameの形式で外部サーバー文法を使用できます。データベースを指定しない場合、TeradataからTeradataへの現在のデータベースがそのデフォルトになり、それがデフォルトとして、またはコネクタまたはTeradataからPrestoのリンク プロパティで提供されるオーバーライドされたデータベースとして使用されます。この外部サーバー文法は、結合や、通常のテーブル(ビュー、マクロ、ストアド プロシージャを含む)を参照するその他の任意の場所で使用できます。
AND、OR、NOT、>、<などの論理式がサポートされます。最大2048列を返すなど、標準のTeradataの制限が適用されます。行のサイズの制限は、使用しているTeradata Databaseのバージョンによって異なります。
サポートされているデータ型の一覧については、Teradata QueryGridコネクタのデータ型マッピングを参照してください。
クエリー処理は、ターゲット システムの機能とローカル システムの最適化に応じてターゲット システムにプッシュダウンされます。例えば、TeradataシステムからターゲットPrestoシステムにクエリーする場合、Teradata最適化ルーチンがプッシュダウンの述語を決定し、ターゲット システムで何がサポートされているかに基づいて最終的なターゲット クエリーのプッシュダウンを評価します。
例: TeradataからPrestoへのSELECT
以下の例では、外部サーバー オブジェクト(presto1)とターゲットPrestoテーブル(cardata)を使用して、Teradataからのリクエストを開始し、ターゲットPrestoシステムのテーブルからデータを選択します。
SELECT CAST(Price AS DECIMAL (8,2)) , mileage , CAST(make AS VARCHAR(20)) , CAST(model AS VARCHAR(20)) FROM cardata@presto1 WHERE make=’Buick’;
結果:
price mileage make model -------- ------- ------ -------------------- 17314.10 8221 Buick Century 17542.04 9135 Buick Enclave
例: 外部テーブルによるTeradataからPrestoへのSELECT
この例では、外部テーブルのプッシュ ダウン クエリーを使用してTeradataでリクエストを開始し、ターゲットPrestoシステムからデータを取得します。これはパス スルー クエリーであり、Teradata側は解析されません。しかし、例えばテーブル名をカタログ名で修飾するには、ターゲット サーバーでの再生成が必要になる場合があります。
SELECT * FROM FOREIGN TABLE (SELECT make, model FROM default.cardata where make = 'Buick')@QG_presto1 AS dt;
結果:
make model ------ -------------------- Buick Century Buick Enclave
例: EXPORT句を使用した外部テーブルによるTeradataからPrestoへのSELECT
この例は、単一の演算子でエクスポート操作と後続の結合およびインポート操作を組み合わせた追加のエクスポート句を伴う外部テーブル クエリーを示します。この例では、まずターゲット データベースで一時テーブル(temp)を作成し、ローカルのut2.datatypes2テーブルから一時テーブルにデータをエクスポートした後、一時テーブルとターゲットのdatatypes1.bigint1テーブルを結合するために外部テーブルでクエリーを実行して、結果セットをTeradataに戻します。
SELECT * FROM FOREIGN TABLE (SELECT datatypes1.bigint1, temp.double1 FROM datatypes1, temp WHERE datatypes1.bigint1 > 1)@test EXPORT((select * from ut2.datatypes2) as temp) AS ft;
例: EXPORT句を使用したTeradataからPrestoへのSELECT FROM FOREIGN TABLE (複数の入力ストリーム)
複数のテーブルをターゲット システムにエクスポートできます。最大16個の入力ストリームがサポートされています。制限を超えると、エラーが表示されます。
SELECT * FROM FOREIGN TABLE(SELECT types_numeric.bigint1,temp1.integer1 , temp2.byteint2 FROM types_numeric, temp1,temp2 WHERE types_numeric.bigint1 > 1 AND temp2.bigint2 = types_numeric.bigint1)@td1 EXPORT( (SELECT 127 as byteint1, 32767 as smallint1, 2147483647 as integer1, 9223372036854775807 as bigint1) as temp1, localdb.table1 as temp2) AS ft;
例: RETURNS句を使用したSELECT
SELECTは、期待される出力を定義するためにRETURNS句の使用をサポートします。RETURNS句は、列リストまたはテーブル定義をサポートし、通常は特定の型、文字セットの長さ、および文字列形式を持つ列を返すために使用されます。RETURNS句で使用される配列は、Teradata配列型に基づいて列を返します。無制限または制限のある文字列型を取得する場合、RETURNS句はこれらの型を特定の長さまたは文字セットを持つCHAR、VARCHAR、またはCLOBにマップするのに役立ちます。BYTEとVARBYTEは、特定の長さにマップすることもできます。
CREATE TYPE SUSUDTLIB.STRARRAY AS VARCHAR(2) CHARACTER SET UNICODE ARRACY [3]; SELECT * FROM datatypes1@fs1 RETURNS (varchar1 STRARRAY) SELECT * FROM datatypes1@fs1 RETURNS (varchar1 VARCHAR(5) CHARACTER SET LATIN) WHERE bigint1 >10000 AND double1 < 10000;
例: 外部関数のSELECT
外部関数の実行中に、テーブルが開始システムからターゲット システムにエクスポートされ、その関数がターゲット システムで実行され、結果が開始システムにインポートされます。
SELECT clicktime, custname(char(10)), productname, pagetype, productprice, sessionid FROM SESSIONIZE@remoteTD ( ON sess_data PARTITION BY partition_id ORDER BY clicktime USING TIMECOLUMN('clicktime') TIMEOUT(60) RAPIDFIRE(0.2) ) AS S, cust_data where S.userid = custid ORDER BY S.partition_id, S.clicktime; *** Query completed. 19 rows found. 6 columns returned. *** Total elapsed time was 3 seconds. CLICKTIME custname PRODUCTNAME PAGETYPE PRODUCTPRICE SESSIONID -------------------------- -------- ------------ --------- ------------ --------- 2013-12-03 22:03:02.540000 Sri ? Home ? 0 2013-12-03 22:03:32.190000 Sri mytablet checkout 45000.00 0 2013-12-03 22:03:46.210000 Sri myphone 3 checkout 46000.00 0 2013-12-03 22:04:13.820000 Sri B LED TV checkout 86000.00 0 2013-12-03 22:04:25.520000 Sri Z LED TV checkout 91000.00 0 2013-12-18 22:08:07.800000 Walkar ? Home ? 1 2013-12-18 22:08:38.890000 Walkar A Laptop checkout 58500.00 1 2013-12-19 22:09:26.930000 Walkar ? Home ? 2 2013-12-19 22:10:09.180000 Walkar XYZ Laptop checkout 56500.00 2 2013-12-19 22:10:41.860000 Walkar Solar A4 checkout 36500.00 2 2013-12-19 22:11:00.040000 Walkar ABC Tru checkout 41500.00 2 2013-12-24 22:15:13.600000 Pam ? Home ? 3 2013-12-24 22:15:42.170000 Pam home theater checkout 800.00 3 2013-12-24 22:16:03.520000 Pam TV 52inch checkout 700.00 3 2013-12-25 22:12:20.890000 Julia ? Home ? 4 2013-12-25 22:12:52.820000 Julia ABC Tru checkout 41000.00 4 2013-12-25 22:13:11.720000 Julia myphone 3 checkout 47000.00 4 2013-12-26 22:13:54.150000 Doug ? Home ? 5 2013-12-26 22:14:13.000000 Doug myphone 3 checkout 250.00 5