Puede utilizar la gramática de servidor externo en forma de database_name.table_name@server_name en las sentencias SELECT de sus consultas. Si no especifica una base de datos, se elige de forma predeterminada la base de datos actual de Teradata a Teradata, que se utilizará como base de datos predeterminada o reemplazada que se proporciona en las propiedades de conector o de enlace de Teradata a Presto. Puede usar esta gramática de servidor externo en uniones y en cualquier otro lugar donde se haga referencia a una tabla normal, incluidos vistas, macros y procedimientos almacenados.
Se admiten expresiones lógicas como AND, OR, NOT, > y <, entre otras. Se aplican límites de Teradata estándar, como devolver hasta 2048 columnas. El límite de tamaño de las filas depende de la versión del sistema de Teradata que se utilice.
Para obtener una lista de los tipos de datos compatibles, consulte Asignación de tipo de datos para conectores de Teradata QueryGrid.
El procesamiento de consultas se aplica en el sistema remoto, en función de las capacidades del sistema de destino y la optimización del sistema local. Por ejemplo, si se consulta un sistema Presto remoto desde un sistema Teradata, el optimizador de Teradata decide los predicados de aplicación, que luego se evalúan para la aplicación de consulta de destino final según lo que admita el sistema de destino.
Ejemplo: SELECT de Teradata a Presto
En el ejemplo se inicia una solicitud desde Teradata para seleccionar datos de una tabla del sistema Presto de destino mediante el objeto de servidor externo (presto1) y la tabla de Presto de destino (cardata):
SELECT CAST(Price AS DECIMAL (8,2)) , mileage , CAST(make AS VARCHAR(20)) , CAST(model AS VARCHAR(20)) FROM cardata@presto1 WHERE make=’Buick’;
Resultado:
price mileage make model -------- ------- ------ -------------------- 17314.10 8221 Buick Century 17542.04 9135 Buick Enclave
Ejemplo: SELECT de Teradata a Presto de tabla externa
En el ejemplo se inicia una solicitud en Teradata mediante la consulta de aplicación de tabla externa para recuperar datos de un sistema Presto de destino. Se trata de una consulta de paso a través que no se analiza en el extremo de Teradata, pero es posible que deba regenerarse en el servidor de destino, por ejemplo, para calificar el nombre de la tabla con el nombre de catálogo:
SELECT * FROM FOREIGN TABLE (SELECT make, model FROM default.cardata where make = 'Buick')@QG_presto1 AS dt;
Resultado:
make model ------ -------------------- Buick Century Buick Enclave
Ejemplo: SELECT de Teradata a Presto desde tabla externa con una cláusula EXPORT
En el ejemplo se muestra una consulta de tabla externa con una cláusula adicional de exportación que combina la operación de exportación y la operación de importación y unión subsiguiente en un solo operador. Este ejemplo primero crea una tabla temporal (temp) en la base de datos de destino, exporta los datos de la tabla local ut2.datatypes2 a la tabla temporal, ejecuta la consulta en la tabla externa para unir la tabla temporal y la tabla datatypes1.bigint1 de destino; a continuación, el conjunto de resultados se devuelve a 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;
Ejemplo: SELECT de Teradata a Presto desde tabla externa con una cláusula EXPORT (varios flujos de datos de entrada)
Se pueden exportar varias tablas al sistema de destino. Se admite un máximo de 16 flujos de datos de entrada. Se muestra un error cuando se supera el límite.
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;
Ejemplo: SELECT con una cláusula RETURNS
SELECT admite el uso de una cláusula RETURNS para definir el resultado esperado cuando se utiliza SQL Engine 16.20 o una versión posterior. La cláusula RETURNS admite listas de columnas o definiciones de tabla, y se suele utilizar para devolver una columna con un determinado tipo, longitud de juego de caracteres y formato de cadena. Cuando se obtiene un tipo de cadena sin límite o limitado, una cláusula RETURNS ayuda a asignar estos tipos a CHAR, VARCHAR o CLOB con una longitud o juego de caracteres específico. BYTE y VARBYTE también se pueden asignar a una longitud específica.
- Tipos de CHAR: Char, Varchar, Clob, Matriz de Char/Varchar
- Tipos de byte: Byte, Varbyte, Blob
- El tipo de datos devueltos debe ser compatible con el tipo de importación.
- Solo se admite la matriz unidimensional de Char/Varchar.
- Si no se admiten los tipos de importación o devolución, la cláusula RETURNS no tiene ningún efecto.
SELECT c_vchar FROM testtabl@fs1 RETURNS(c_vchar VARCHAR(2)); SELECT * FROM testtab2@fs1 RETURNS(c_vchar2 VARCHAR(5) CHARACTER SET LATIN);
Ejemplo: función externa SELECT
La ejecución de la función externa permite que las funciones definidas en el sistema de destino utilicen las tablas del sistema iniciador como entrada. Al ejecutar la función Función externa, las tablas se exportan desde el sistema de inicio al sistema de destino. La función remota en el sistema de destino es iniciada por el sistema de destino y el resultado se importa en el sistema de inicio.
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