
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!