Obtén metadatos de reservas con INFORMATION_SCHEMA

INFORMATION_SCHEMA contiene una serie de vistas que proporcionan acceso a metadatos sobre conjuntos de datos, rutinas, tablas, vistas, trabajos y reservas.

Puedes buscar las vistas de reservas de INFORMATION_SCHEMA para recuperar metadatos en tiempo real sobre las reservas de BigQuery. Estas vistas contienen la lista de cambios que se realizaron en las reservas, las asignaciones y los compromisos de capacidad, junto con un cronograma de reservas.

Permisos necesarios

Para recuperar los metadatos de reservas mediante las tablas de INFORMATION_SCHEMA, se requieren permisos con un alcance adecuado:

  • RESERVATION_TIMELINE_BY_PROJECT requiere bigquery.reservations.list para el proyecto y está disponible en las funciones BigQuery User, BigQuery Resource Admin y BigQuery Admin.
  • RESERVATION_CHANGES_BY_PROJECT requiere bigquery.reservations.list para el proyecto y está disponible en las funciones BigQuery User, BigQuery Resource Admin y BigQuery Admin.
  • CAPACITY_COMMITMENT_CHANGES_BY_PROJECT requiere bigquery.capacityCommitments.list para el proyecto y está disponible en las funciones BigQuery User, BigQuery Resource Admin y BigQuery Admin.
  • ASSIGNMENT_CHANGES_BY_PROJECT requiere bigquery.reservationAssignments.list para el proyecto y está disponible en las funciones BigQuery User, BigQuery Resource Admin y BigQuery Admin.

Esquemas

Cuando buscas las vistas de reservas de INFORMATION_SCHEMA, los resultados de la búsqueda contienen información sobre las reservas de BigQuery. Para obtener más información sobre las reservas de BigQuery, consulta la página sobre los conceptos relacionados con las reservas.

  • INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT contiene una lista de todos los cambios que se realizaron en las reservas del proyecto de administración. Cada fila representa un cambio que se realizó en una reserva única.
  • INFORMATION_SCHEMA.RESERVATION_TIMELINE_BY_PROJECT muestra una vista de cronograma para todas las reservas del proyecto de administración. Para cada change_timestamp única, en esta vista se muestra una lista del estado de todas las reservas que están activas en ese momento.
  • INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT contiene una lista de todos los cambios que se hicieron en los compromisos de capacidad del proyecto de administración. Cada fila representa un solo cambio que se realizó en un compromiso de capacidad único.
  • INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT contiene una lista de todos los cambios que se realizaron en las asignaciones del proyecto de administración. Cada fila representa un solo cambio que se realizó en una asignación única.

La vista INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
change_timestamp TIMESTAMP Hora en la que se produjo el cambio.
project_id STRING ID del proyecto de administración.
project_number INTEGER Número del proyecto de administración.
reservation_name STRING Nombre de reserva que proporcionó el usuario.
ignore_idle_slots BOOL Si es falso, toda consulta que use esta reserva puede utilizar las ranuras inactivas de otros compromisos de capacidad.
action STRING El tipo de evento que ocurrió con la reserva. Puede ser CREATE, UPDATE o DELETE.
slot_capacity INTEGER Capacidad de la ranura que se asocia con la reserva.

La vista INFORMATION_SCHEMA.RESERVATION_TIMELINE_BY_PROJECT tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
change_timestamp TIMESTAMP Hora en la que se produjo el cambio.
project_id STRING ID del proyecto de administración.
project_number INTEGER Número del proyecto de administración.
reservation_name STRING Nombre de reserva que proporcionó el usuario.
ignore_idle_slots BOOL Si es falso, toda consulta que use esta reserva puede utilizar las ranuras inactivas de otros compromisos de capacidad.
slot_capacity INTEGER Capacidad de la ranura que se asocia con la reserva.

La vista INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
change_timestamp TIMESTAMP Hora en la que se produjo el cambio.
project_id STRING ID del proyecto de administración.
project_number INTEGER Número del proyecto de administración.
capacity_commitment_id STRING ID que identifica el compromiso de capacidad de forma única.
commitment_plan STRING Plan de compromiso del compromiso de capacidad.
state STRING Indica el compromiso de capacidad correspondiente. Puede ser PENDING o ACTIVE.
slot_count INTEGER Recuento de ranuras asociado con el compromiso de capacidad.
action STRING Tipo de evento que ocurrió con el compromiso de capacidad. Puede ser CREATE, UPDATE o DELETE.

La vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
change_timestamp TIMESTAMP Hora en la que se produjo el cambio.
project_id STRING ID del proyecto de administración.
project_number INTEGER Número del proyecto de administración.
assignment_id STRING ID que identifica la asignación de forma única.
reservation_name STRING Nombre de la reserva que usa la asignación.
job_type STRING El tipo de trabajo que puede usar la reserva. Puede ser PIPELINE o QUERY.
assignee_id STRING ID que identifica el recurso asignado de forma única.
assignee_number INTEGER Número que identifica el recurso asignado de forma única.
assignee_type INTEGER Tipo de recurso asignado. Puede ser organization, folder o project.
action STRING Tipo de evento que ocurrió con la asignación. Puede ser CREATE o DELETE.

Retención de datos

Por el momento, solo se retienen los últimos 180 días del historial de reservas en las vistas de reservas de INFORMATION_SCHEMA.

Regionalidad

Las vistas de reservas INFORMATION_SCHEMA de BigQuery están regionalizadas. Para consultar estas vistas, debes anteponer un nombre de región que sea compatible con el formato `region-region-name`.INFORMATION_SCHEMA.view.

Por ejemplo:

  • Para consultar datos en la multirregión de EE.UU., usa `region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT.
  • Para consultar datos en la multirregión de la UE, usa `region-eu`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT.
  • Para consultar datos en la región asia-northeast1, usa `region-asia-northeast1`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT.

Si deseas obtener una lista de las regiones disponibles, consulta Ubicaciones de conjuntos de datos.

Ejemplos

Ejemplo 1

En el siguiente ejemplo, se indica cómo obtener la reserva asignada actualmente al proyecto y su capacidad de ranura. Esta información es útil para depurar el rendimiento del trabajo mediante la comparación del uso de ranuras del proyecto con la capacidad de la reserva asignada a ese proyecto.

La consulta se debe ejecutar en el proyecto del administrador que contiene las reservas. Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto con el siguiente formato: `project-id`.`region-region-name`.INFORMATION_SCHEMA.view Por ejemplo, `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. En el cuadro Editor de consultas, ingresa la siguiente consulta de SQL estándar. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    SELECT
      reservation.reservation_name,
      reservation.slot_capacity
    FROM
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment
    INNER JOIN
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation
    ON
      (assignment.reservation_name = reservation.reservation_name)
    WHERE
      assignment.action = "CREATE"
      AND assignment.assignee_id = "my-project"
      AND job_type = "QUERY" /* can also be "PIPELINE */
    ORDER BY
      assignment.change_timestamp DESC,
      reservation.change_timestamp DESC
    LIMIT
      1;
    
  3. Haz clic en Ejecutar.

gcloud

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'SELECT
  reservation.reservation_name,
  reservation.slot_capacity
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment
INNER JOIN
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation
ON
  (assignment.reservation_name = reservation.reservation_name)
WHERE
  assignment.action = "CREATE"
  AND assignment.assignee_id = "my-project"
  AND job_type = "QUERY" /* can also be "PIPELINE */
ORDER BY
  assignment.change_timestamp DESC,
  reservation.change_timestamp DESC
LIMIT
  1;'

Ejemplo 2

En el siguiente ejemplo, se indica cómo obtener el historial de cambios de una reserva determinada. Usa esta información para ver la lista de cambios que se realizaron en una reserva específica.

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto con el siguiente formato: `project-id`.`region-region-name`.INFORMATION_SCHEMA.view Por ejemplo, `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT

Para ejecutar la consulta, haz lo siguiente:

Console

  1. En Cloud Console, abre la IU web de BigQuery.

    Ir a Cloud Console

  2. En el cuadro Editor de consultas, ingresa la siguiente consulta de SQL estándar. INFORMATION_SCHEMA requiere sintaxis de SQL estándar. SQL estándar es la sintaxis predeterminada en Cloud Console.

    SELECT
      *
    FROM
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
    WHERE
      reservation_name = "..."
    ORDER BY
      change_timestamp DESC;
    
  3. Haz clic en Ejecutar.

gcloud

Usa el comando query y especifica la sintaxis de SQL estándar con las marcas --nouse_legacy_sql o --use_legacy_sql=false. Se requiere la sintaxis de SQL estándar para las consultas INFORMATION_SCHEMA.

Para ejecutar la consulta, ingresa lo siguiente:

bq query --nouse_legacy_sql \
'SELECT
  *
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
WHERE
  reservation_name = "..."
ORDER BY
  change_timestamp DESC;'

Próximos pasos