STL_QUERYTEXT - Amazon Redshift

STL_QUERYTEXT

Captura el texto de la consulta para los comandos SQL.

Consulte la vista STL_QUERYTEXT para capturar el SQL que se registró para las siguientes instrucciones:

  • SELECT, SELECT INTO

  • INSERT, UPDATE, DELETE

  • COPY

  • UNLOAD

  • Consultas generadas al ejecutar VACUUM y ANALYZE

  • CREATE TABLE AS (CTAS)

Para consultar la actividad de estas instrucciones durante un periodo determinado, combine las vistas STL_QUERYTEXT y STL_QUERY.

nota

Las vistas STL_QUERY y STL_QUERYTEXT solo presentan información relacionada con consultas, no sobre otras utilidades y comandos de DDL. Para obtener una lista con información sobre todas las instrucciones ejecutadas por Amazon Redshift, también puede consultar las vistas STL_DDLTEXT y STL_UTILITYTEXT. Para obtener una lista completa de todas las instrucciones ejecutadas por Amazon Redshift, puede consultar la vista SVL_STATEMENTTEXT.

Consulte también STL_DDLTEXT, STL_UTILITYTEXT y SVL_STATEMENTTEXT.

STL_QUERYTEXT es visible para todos los usuarios. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.

Algunos o todos los datos de esta tabla también están en la vista de monitoreo SYS SYS_QUERY_TEXT. Los datos de la vista de monitoreo SYS están formateados para que sean más fáciles de usar y entender. Se recomienda utilizar la vista de monitoreo SYS para las consultas.

Columnas de la tabla

Nombre de la columna Tipo de datos Descripción
userid integer ID del usuario que generó la entrada.
xid bigint ID de transacción.
pid integer ID de proceso. Por lo general, todas las consultas en una sesión se ejecutan en el mismo proceso, por lo que este valor suele permanecer constante si ejecuta una serie de consultas en la misma sesión. Después de determinados eventos internos, Amazon Redshift podría reiniciar una sesión activa y asignar un PID nuevo. Para obtener más información, consulte STL_RESTARTED_SESSIONS. Puede utilizar esta columna para combinar la vista STL_ERROR.
consulta integer ID de la consulta. La columna de consulta puede usarse para combinar otras vistas y tablas del sistema.
sequence integer Cuando una única instrucción tiene más de 200 caracteres, se registran filas adicionales para esa instrucción. Secuencia 0 es la primera fila, 1 es la segunda y, así, sucesivamente.
texto character(200) Texto SQL, en incrementos de 200 caracteres. El campo puede contener caracteres especiales como una barra inversa(\\) y una nueva línea (\n).

Consultas de ejemplo

Puede utilizar la función PG_BACKEND_PID() para recuperar información de la sesión actual. Por ejemplo, la siguiente consulta devuelve el ID de consulta y una parte de su texto para aquellas consultas que se hayan completado en la sesión actual.

select query, substring(text,1,60) from stl_querytext where pid = pg_backend_pid() order by query desc; query | substring -------+-------------------------------------------------------------- 28262 | select query, substring(text,1,80) from stl_querytext where 28252 | select query, substring(path,0,80) as path from stl_unload_l 28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma 28247 | Count rows in target table 28245 | unload ('select * from category') to 's3://dw-tickit/manifes 28240 | select query, substring(text,1,40) from stl_querytext where (6 rows)

Reconstruyendo el SQL almacenado

Para reconstruir el SQL almacenado en la columna text de STL_QUERYTEXT, ejecute una instrucción SELECT para crear SQL de 1 o más partes en la columna text. Antes de ejecutar el SQL reconstruido, reemplace cualquier caracter especial (\n) con una nueva línea. El resultado de la siguiente instrucción SELECT es filas de SQL reconstruido en el campo query_statement.

SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count FROM stl_querytext GROUP BY query ORDER BY query desc;

Por ejemplo, la siguiente búsqueda selecciona 3 columnas. La búsqueda en si misma es más larga de 200 caracteres y se guarda en varias partes en STL_QUERYTEXT.

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

En este ejemplo, la búsqueda se guarda en 2 partes (filas) en la columna text de STL_QUERYTEXT.

select query, sequence, text from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text -------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 45 | 1 | \nFROM stl_querytext;

Para reconstruir el SQL almacenado en STL_QUERYTEXT, ejecute el siguiente SQL.

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_query_id();

Para usar el SQL reconstruido resultante en su cliente, reemplace cualquier (\n) caracter especial con una nueva línea.

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;