Supervisa consultas continuas
Puedes supervisar las consultas continuas de BigQuery con las siguientes herramientas de BigQuery:
- Vistas
INFORMATION_SCHEMA
- Gráficos de ejecución de consultas
- Historial de trabajos
- Explorador de trabajos administrativos
Debido a la naturaleza de larga duración de una consulta continua de BigQuery, las métricas que se suelen generar cuando se completa una consulta de SQL pueden estar ausentes o imprecisas.
Usa las vistas de INFORMATION_SCHEMA
Puedes usar varias vistas INFORMATION_SCHEMA
para supervisar las consultas continuas y las reservas de consultas continuas.
Ver detalles del trabajo
Puedes usar la vista JOBS
para obtener metadatos de trabajos de consultas continuas.
La siguiente consulta devuelve los metadatos de todas las consultas continuas activas. Los metadatos incluyen la marca de agua de salida, que representa el punto hasta el cual la consulta continua procesó datos correctamente.
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, ejecute la siguiente consulta:
SELECT start_time, job_id, user_email, query, state, reservation_id, continuous_query_info.output_watermark FROM `PROJECT_ID.region-REGION.INFORMATION_SCHEMA.JOBS` WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 day) AND continuous IS TRUE AND state = "RUNNING" ORDER BY start_time DESC
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto.REGION
: Cualquier nombre de región del conjunto de datos. Por ejemplo,region-us
.
Cómo ver los detalles de la asignación de la reserva
Puedes usar las vistas ASSIGNMENTS
y RESERVATIONS
para obtener detalles de asignación de reserva de consultas continuas.
Muestra los detalles de la asignación de reservas para las consultas continuas:
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, ejecute la siguiente consulta:
SELECT reservation.reservation_name, reservation.slot_capacity FROM `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS` AS assignment INNER JOIN `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS` AS reservation ON (assignment.reservation_name = reservation.reservation_name) WHERE assignment.assignee_id = 'PROJECT_ID' AND job_type = 'CONTINUOUS';
Reemplaza lo siguiente:
ADMIN_PROJECT_ID
por el ID del proyecto de administración que posee la reserva.LOCATION
: la ubicación de la reserva.PROJECT_ID
: el ID del proyecto que se asigna a la reserva. Solo se muestra información sobre las consultas continuas que se ejecutan en este proyecto.
Consulta la información de consumo de ranuras
Puedes usar las vistas ASSIGNMENTS
, RESERVATIONS
y JOBS_TIMELINE
. para obtener información del consumo de ranuras de consulta continua.
Muestra información sobre el consumo de ranuras de consultas continuas:
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, ejecute la siguiente consulta:
SELECT jobs.period_start, reservation.reservation_name, reservation.slot_capacity, SUM(jobs.period_slot_ms) / 1000 AS consumed_total_slots FROM `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS` AS assignment INNER JOIN `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS` AS reservation ON (assignment.reservation_name = reservation.reservation_name) INNER JOIN `PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.JOBS_TIMELINE` AS jobs ON ( UPPER(CONCAT('ADMIN_PROJECT_ID:LOCATION.', assignment.reservation_name)) = UPPER(jobs.reservation_id)) WHERE assignment.assignee_id = 'PROJECT_ID' AND assignment.job_type = 'CONTINUOUS' AND jobs.period_start BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP() GROUP BY 1, 2, 3 ORDER BY jobs.period_start DESC;
Reemplaza lo siguiente:
ADMIN_PROJECT_ID
por el ID del proyecto de administración que posee la reserva.LOCATION
: la ubicación de la reserva.PROJECT_ID
: el ID del proyecto que se asigna a la reserva. Solo se muestra información sobre las consultas continuas que se ejecutan en este proyecto.
También puedes supervisar las reservas de consultas continuas con otras herramientas, como el Explorador de métricas y los gráficos de recursos administrativos. Para obtener más información, consulta Supervisa reservas de BigQuery.
Usa el gráfico de ejecución de consultas
Puedes usar el gráfico de ejecución de consultas para obtener estadísticas de rendimiento y estadísticas generales para una consulta continua. Para obtener más información, consulta Visualiza las estadísticas de rendimiento de las consultas.
Ver el historial de un trabajo
Puedes ver los detalles del trabajo de consulta continua en tu historial de trabajos personales o en el historial de trabajos del proyecto. Para obtener más información, consulta Visualiza los detalles del trabajo.
Ten en cuenta que la lista histórica de trabajos se ordena según la hora de inicio del trabajo, por lo que es posible que las consultas continuas que se han ejecutado por un tiempo no estén cerca del inicio de la lista.
Usa el explorador de trabajos administrativos
En el explorador de trabajos administrativos, filtra tus trabajos para mostrar las consultas continuas. Para ello, configura el filtro Categoría de trabajo en Consulta continua.
Use Cloud Monitoring
Puedes ver métricas específicas de las consultas continuas de BigQuery con Cloud Monitoring. Para obtener más información, consulta Crea paneles, gráficos y alertas y lee sobre las métricas disponibles para la visualización.
Alerta sobre consultas con errores
En lugar de verificar de forma rutinaria si fallaron tus consultas continuas, puede ser útil crear una alerta para que te notifique sobre las fallas. Una forma de hacerlo es crear una métrica basada en registros de Cloud Logging personalizada con un filtro para tus trabajos y una política de alertas de Cloud Monitoring basada en esa métrica:
- Cuando crees una consulta continua, usa un prefijo de ID de trabajo personalizado.
Varias consultas continuas pueden compartir el mismo prefijo.
Por ejemplo, podrías usar el prefijo
prod-
para indicar una búsqueda de producción. En la consola de Google Cloud , ve a la página Métricas basadas en registros.
Haz clic en Crear métrica. Aparecerá el panel Crear métrica de registros.
En Tipo de métrica, selecciona Contador.
En la sección Detalles, asígnale un nombre a tu métrica. Por ejemplo,
CUSTOM_JOB_ID_PREFIX-metric
En la sección Selección de filtro, ingresa lo siguiente en el editor Crear filtro:
resource.type = "bigquery_project" protoPayload.resourceName : "projects/PROJECT_ID/jobs/CUSTOM_JOB_ID_PREFIX" severity = ERROR
Reemplaza lo siguiente:
PROJECT_ID
: nombre del proyecto.CUSTOM_JOB_ID_PREFIX
: Es el nombre del prefijo del ID del trabajo personalizado que estableciste para tu consulta continua.
Haz clic en Crear métrica.
En el menú de navegación, haz clic en Métricas basadas en registros. La métrica que acabas de crear aparecerá en la lista de métricas definidas por el usuario.
En la fila de tu métrica, haz clic en
Más acciones y, luego, en Crear alerta a partir de métricas.Haz clic en Siguiente. No es necesario que cambies la configuración predeterminada en la página Modo de configuración de políticas.
Haz clic en Siguiente. No es necesario que cambies la configuración predeterminada en la página Configurar activador de alerta.
Selecciona tus canales de notificaciones y, luego, ingresa un nombre para la política de alertas.
Haz clic en Crear política.
Para probar la alerta, ejecuta una consulta continua con el prefijo del ID de trabajo personalizado que seleccionaste y, luego, cancélala. Es posible que la alerta tarde unos minutos en llegar a tu canal de notificaciones.
Vuelve a intentar las búsquedas con errores
Volver a intentar una consulta continua fallida puede ayudar a evitar situaciones en las que una canalización continua no funciona durante un período prolongado o requiere intervención humana para reiniciarse. Estos son algunos aspectos importantes que debes tener en cuenta cuando vuelvas a intentar ejecutar una consulta continua fallida:
- Indica si es tolerable volver a procesar una cierta cantidad de datos que procesó la consulta anterior antes de que fallara.
- Cómo controlar los reintentos de limitación o usar la retirada exponencial
Un posible enfoque para automatizar el reintento de consultas es el siguiente:
Crea un receptor de Cloud Logging basado en un filtro de inclusión que cumpla con los siguientes criterios para enrutar los registros a un tema de Pub/Sub:
resource.type = "bigquery_project" protoPayload.resourceName : "projects/PROJECT_ID/jobs/CUSTOM_JOB_ID_PREFIX" severity = ERROR
Reemplaza lo siguiente:
PROJECT_ID
: nombre del proyecto.CUSTOM_JOB_ID_PREFIX
: Es el nombre del prefijo del ID del trabajo personalizado que estableciste para tu consulta continua.
Crea una Cloud Run Function que se active en respuesta a los registros de recepción de Pub/Sub que coincidan con tu filtro.
La función de Cloud Run podría aceptar la carga útil de datos del mensaje de Pub/Sub y tratar de iniciar una nueva consulta continua con la misma sintaxis de SQL que la consulta fallida, pero al principio, justo después de que se detuvo el trabajo anterior.
Por ejemplo, puedes usar una función similar a la siguiente:
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
¿Qué sigue?
- Aprende a crear y ejecutar consultas continuas.