DataSunrise Logra el Estado de Competencia en AWS DevOps en AWS DevSecOps y Monitoreo, Registro, Rendimiento

Historial de Consultas de Snowflake

Historial de Consultas de Snowflake

Historial de Consultas de Snowflake

Introducción

Rastrear y auditar la actividad de la base de datos es una parte crucial para asegurar y optimizar cualquier almacén de datos. Snowflake es una popular plataforma de datos en la nube que proporciona robustas herramientas para obtener información detallada sobre las consultas en tu cuenta. En este artículo, exploraremos en detalle la vista del historial de consultas de Snowflake y las funciones de la tabla QUERY_HISTORY. Aprenderás cómo usar estas características para obtener valiosos conocimientos sobre la actividad de las consultas, el rendimiento y los patrones de acceso.

¿Qué es la vista query_history de Snowflake?

La vista query_history en Snowflake muestra todas las consultas ejecutadas en tu cuenta. Es de solo lectura. La información está disponible para los últimos 7 días para la Edición Estándar. Para la Edición Empresarial y superior, está disponible para los últimos 14 días.

Esta información está disponible para los últimos 7 días para la Edición Estándar y 14 días para la Edición Empresarial y superiores. Proporciona información detallada sobre cada consulta, incluyendo:

  • Texto de la consulta

  • Estado de ejecución (por ejemplo, completada, fallida, en ejecución)

  • Objetos consultados (tablas, vistas, etc.)

  • Usuario que ejecutó la consulta

  • Hora de inicio y finalización de la consulta

  • Número de filas devueltas

  • Bytes escaneados

  • Y más

Snowflake llena automáticamente esta vista y no requiere ninguna configuración o configuración de tu parte. Puedes consultar esta vista de auditoría de acceso de Snowflake como cualquier otra vista de Snowflake.

Ejemplo de consulta de query_history

A continuación se muestra un ejemplo básico de uso de la vista query_history. Esta vista muestra las 10 consultas más recientes ejecutadas por el usuario actual.

SELECT query_text, start_time, execution_status 
FROM query_history
WHERE user_name = current_user()
ORDER BY start_time DESC
LIMIT 10;

Esta consulta selecciona el texto SQL, la hora de inicio y el estado de ejecución de las consultas desde la vista query_history. Filtra solo aquellas consultas ejecutadas por el usuario actual, ordena los resultados con las consultas más recientes primero y limita la salida a 10 filas.

Las funciones de la tabla QUERY_HISTORY

Además de la vista query_history, Snowflake proporciona un conjunto de funciones de tabla para acceder a los datos del historial de consultas. Estas funciones permiten recuperar el historial de consultas de más allá del período de retención de 7 o 14 días de la vista.

Las funciones QUERY_HISTORY vienen en tres variantes:

  • QUERY_HISTORY() – Devuelve el historial de consultas de 14 días en una estructura de micro-partición para consultas optimizadas

  • QUERY_HISTORY_BY_SESSION() – Devuelve el historial de consultas de 14 días con detalles adicionales a nivel de sesión

  • QUERY_HISTORY_BY_USER() – Devuelve el historial de consultas de 14 días con detalles adicionales a nivel de usuario

Ejemplo de uso de QUERY_HISTORY

Supongamos que quieres encontrar a los 5 usuarios que han escaneado más datos en los últimos 14 días. Podrías usar esta función de tabla de Snowflake de la siguiente manera:

SELECT user_name, sum(bytes_scanned) as total_bytes_scanned
FROM TABLE(QUERY_HISTORY())
WHERE start_time >= dateadd('day', -14, current_timestamp())  
GROUP BY user_name
ORDER BY total_bytes_scanned DESC
LIMIT 5;

Esta consulta recupera el historial de consultas de los últimos 14 días utilizando la función QUERY_HISTORY. Suma la columna bytes_scanned para cada usuario, ordena los resultados de forma descendente por total de bytes escaneados y toma a los 5 usuarios principales.

Filtrando los resultados del historial de consultas

La vista query_history y las funciones QUERY_HISTORY admiten una amplia gama de predicados SQL para filtrar resultados. Algunos predicados comunes que podrías usar incluyen:

  • query_id – El identificador único de una consulta

  • query_type – El tipo de consulta (por ejemplo, SELECT, INSERT, CREATE TABLE)

  • user_name – El nombre del usuario que ejecutó la consulta

  • start_time y end_time – Las marcas de tiempo cuando la consulta comenzó y terminó

  • execution_status – El estado de la consulta (por ejemplo, RUNNING, COMPLETED, FAILED)

  • database_name, schema_name, table_name – Los nombres de los objetos de la base de datos accedidos por la consulta

A continuación se muestra un ejemplo que encuentra todas las consultas fallidas que accedieron a una tabla específica en el último día:

SELECT * 
FROM query_history
WHERE execution_status = 'FAILED'
 AND table_name = 'my_table'
 AND start_time >= dateadd('day', -1, current_timestamp());

Casos de uso del historial de consultas

La característica del historial de consultas de Snowflake tiene muchos casos de uso valiosos, incluyendo:

Auditoría y seguridad

Al rastrear todas las consultas ejecutadas en tu cuenta de Snowflake, query_history te permite:

  • Monitorizar actividad sospechosa o acceso no autorizado

  • Investigar incidentes de seguridad

  • Garantizar el cumplimiento de políticas de gobernanza de datos

  • Proporcionar una pista de auditoría para requerimientos regulatorios

Optimización de consultas

Los datos del historial de consultas pueden ayudarte a optimizar el rendimiento de las consultas mediante:

  • Identificación de las consultas que requieren más recursos

  • Análisis de patrones de consultas a lo largo del tiempo

  • Detectando y solucionando errores de consultas o tiempos de espera

  • Mejora de estrategias de indexación, agrupamiento y particionamiento

Atribución de costos y reparto de gastos

Los bytes escaneados y los datos de tiempo de ejecución en el historial de consultas te permiten:

  • Atribuir los costos de Snowflake a usuarios, equipos o proyectos específicos

  • Implementar modelos de reparto de gastos

  • Fomentar la eficiencia en las consultas y limitar los costos desmedidos

Accediendo al historial de consultas de forma segura

Ten en cuenta que, por defecto, la vista query_history y las funciones QUERY_HISTORY solo son accesibles por el rol ACCOUNTADMIN. Para conceder acceso a otros roles, necesitarás usar el comando GRANT IMPORTED PRIVILEGES.

Ten cuidado al conceder acceso al historial de consultas, ya que puede contener información sensible. Considera crear un rol separado con privilegios limitados específicamente para fines de auditoría y monitoreo.

Resumen y conclusión

La característica del historial de consultas de Snowflake proporciona una visibilidad esencial sobre las consultas que los usuarios ejecutan en tu cuenta. Puedes usar la vista query_history y las funciones de tabla QUERY_HISTORY para varios propósitos. Estos incluyen mejorar la auditoría, optimizar el rendimiento de las consultas y rastrear los costos de uso. Además, estas herramientas ofrecen más beneficios.

Los ejemplos cubiertos en este artículo ilustran solo algunas de las muchas formas en que puedes extraer información de los datos del historial de consultas. A medida que explores más, considera cómo esta información podría mejorar la seguridad, la eficiencia y la gobernanza dentro de tu propio entorno de Snowflake.

DataSunrise proporciona herramientas amigables y flexibles para gestionar la seguridad de Snowflake, reglas de auditoría, enmascaramiento dinámico de datos y cumplimiento. ¡Visita nuestro equipo para una demostración en línea y ver estas capacidades en acción!

Siguiente

Redshift y Athena

Redshift y Athena

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]