Está en la página 1de 4

Crear tablas volátiles

en Teradata

Si trabajas en Teradata y estás en la necesidad de crear una tabla temporal sin


necesidad de permiso (así estés en ambiente producción con usuario de solo
lectura) para analizar alguna incidencia o simplemente realizar alguna tarea como
es mi caso, usar tablas volátiles es la solución.

Ventaja: No necesitan pedir permiso y estructura para crearlo, si trabajas en una


gran empresa sabes lo complicado que es crearlas en producción.
Desventaja: Una vez que la sesión muere, se pierde nuestra tabla. Si estás
trabajando y tu sesión caduca, se pierde la tabla volátil (pero la vuelves a crear).

Sin más rodeos vamos a la sintaxis para dos casos:

1) Crear tabla volátil resultado


de select
Si queremos consultar una tabla, o varias (por joins) y ese resultado guardarlo en
una tabla volátil, debes usar esta opción.
CREATE MULTISET VOLATILE TABLE [Mi_nombre_tabla_volatil] AS
( --Aquí inicia query que resultará en los campos de tabla volátil
--En este ejemplo es un select simple, pero puede ser un inner join
SELECT
COD_CAMPO01, --> campo 1 en mi tabla volatil
COD_CAMPO02, --> campo 2 en mi tabla volatil
COD_CAMPO03, --> campo 3 en mi tabla volatil
. . . --> campo N
FROM ESQUEMA.TABLA_01 --Pueden ser vista, STG, ODS, otra Volátil
WHERE <Condiciones>
)
WITH DATA PRIMARY INDEX (
--Aquí defino los primary index de mi tabla volátil
COD_CAMPO01, COD_CAMPO02, COD_CAMPO03, . . .
) ON COMMIT PRESERVE ROWS;

2) Crear tabla volátil vacía


También puede que requieras crear una tabla volátil vacía, entonces usa esta
opción. Lo que hago es asignar unos valores como primer registro, luego puedes
borrar este registro y quedará vacía, lista para insertar tus valores:

CREATE MULTISET VOLATILE TABLE [Mi_nombre_tabla_volatil] AS


( --Aquí inician los campos de tabla volátil
SELECT
'Valor_01' AS COD_CAMPO01, --> campo 1 en mi tabla volatil
'Valor_02' AS COD_CAMPO02, --> campo 2 en mi tabla volatil
'Valor_03' AS COD_CAMPO03, --> campo 3 en mi tabla volatil
. . . --> campo N
)
WITH DATA PRIMARY INDEX (
--Aquí defino los primary index de mi tabla volátil
COD_CAMPO01, COD_CAMPO02, COD_CAMPO03, . . .
) ON COMMIT PRESERVE ROWS;
Ten en cuenta que la longitud de este valor que le asignemos en la creación será
la longitud máxima.

Por ejemplo si creo un campo APELLIDO con valor «Jayo«, cuando luego
quiera insertar datos como «Pacheco«, solo nos guardará «Pach» porque es el
máximo definido por «Jayo«.

Conclusión
Como puedes ver es muy útil y al ser creadas en memoria sin permisos, nos salva
la vida así sea en ambiente producción. Una vez creada tu tabla volátil, puedes
hacerle operaciones como: Insert, Select (job con otra tabla), Update, Delete ,
Drop table.
También te puede interesar las mejores prácticas a tener en cuenta cuando
trabajes en Teradata.

También podría gustarte