Visualizzazione ASSIGNMENT_CHANGES

La visualizzazione INFORMATION_SCHEMA.ASSIGNMENT_CHANGES contiene un elenco quasi in tempo reale di tutte le modifiche apportate alle assegnazioni all'interno del progetto di amministrazione. Ogni riga rappresenta una singola modifica a una singola assegnazione. Per saperne di più sulle prenotazioni, consulta Introduzione alle prenotazioni.

Autorizzazione obbligatoria

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.ASSIGNMENT_CHANGES, devi disporre dell'autorizzazione Identity and Access Management (IAM) bigquery.reservationAssignments.list per il progetto. Ciascuno dei seguenti ruoli IAM predefiniti include l'autorizzazione richiesta:

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

Per saperne di più sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

La vista INFORMATION_SCHEMA.ASSIGNMENT_CHANGES ha lo schema seguente:

Nome colonna Tipo di dati Valore
change_timestamp TIMESTAMP Ora in cui è stata apportata la modifica.
project_id STRING ID del progetto di amministrazione.
project_number INTEGER Numero del progetto di amministrazione.
assignment_id STRING ID che identifica in modo univoco l'assegnazione.
reservation_name STRING Nome della prenotazione utilizzata dall'assegnazione.
job_type STRING Il tipo di job che può utilizzare la prenotazione. Può essere PIPELINE o QUERY.
assignee_id STRING ID che identifica in modo univoco la risorsa assegnataria.
assignee_number INTEGER Numero che identifica in modo univoco la risorsa assegnataria.
assignee_type STRING Tipo di risorsa assegnatario. Può essere organization, folder o project.
action STRING Tipo di evento che si è verificato con l'assegnazione. Può essere CREATE, UPDATE o DELETE.
user_email STRING Indirizzo email dell'utente o soggetto della federazione delle identità della forza lavoro che ha apportato la modifica. google per le modifiche apportate da Google. NULL se l'indirizzo email è sconosciuto.
state STRING Stato dell'assegnazione. Può essere PENDING o ACTIVE.

Conservazione dei dati

Questa visualizzazione contiene gli incarichi attuali e quelli eliminati che vengono conservati per un massimo di 41 giorni, dopodiché vengono rimossi dalla visualizzazione.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. Se non specifichi un qualificatore regionale, i metadati vengono recuperati da tutte le regioni. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES[_BY_PROJECT] Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

Esempi

Trovare le ultime modifiche apportate a un compito

L'esempio seguente mostra l'utente che ha apportato l'ultimo aggiornamento a un determinato compito entro una data specificata.

SELECT
  user_email,
  change_timestamp,
  reservation_name,
  assignment_id
FROM
  `region-us`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
  change_timestamp BETWEEN '2021-09-30' AND '2021-10-01'
  AND assignment_id = 'assignment_01'
ORDER BY
  change_timestamp DESC
LIMIT 1;

Il risultato è simile al seguente:

+--------------------------------+-----------------------+--------------------+-----------------+
|           user_email           |    change_timestamp   |  reservation_name  |  assignment_id  |
+--------------------------------+-----------------------+--------------------+-----------------+
|  cloudysanfrancisco@gmail.com  |2021-09-30 09:30:00 UTC|   my_reservation   |  assignment_01  |
+--------------------------------+-----------------------+--------------------+-----------------+

Identificare lo stato di assegnazione di una prenotazione in un momento specifico

L'esempio seguente mostra tutte le assegnazioni attive di una prenotazione in un determinato momento.

SELECT
    reservation_name,
    assignee_id,
    assignee_type,
    job_type
FROM
    `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
    reservation_name = RESERVATION_NAME
    AND change_timestamp < TIMESTAMP
QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1
AND action != 'DELETE';

Sostituisci quanto segue:

  • REGION: la regione in cui si trova la prenotazione
  • RESERVATION_NAME: il nome della prenotazione utilizzata dall'assegnazione
  • TIMESTAMP: il timestamp che rappresenta il momento specifico in cui viene controllato l'elenco delle assegnazioni

Il risultato è simile al seguente:

+-------------------------+---------------------------+---------------+----------+
|    reservation_name     |        assignee_id        | assignee_type | job_type |
+-------------------------+---------------------------+---------------+----------+
| test-reservation        | project_1                 | PROJECT       | QUERY    |
| test-reservation        | project_2                 | PROJECT       | QUERY    |
+-------------------------+---------------------------+---------------+----------+

Identificare lo stato di assegnazione di una prenotazione quando è stato eseguito un determinato job

Per visualizzare le assegnazioni attive durante l'esecuzione di un determinato job, utilizza il seguente esempio.

SELECT
    reservation_name,
    assignee_id,
    assignee_type,
    job_type
FROM
    `region-REGION`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES
WHERE
    reservation_name = RESERVATION_NAME
    AND change_timestamp < (SELECT creation_time FROM PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.JOBS WHERE job_id = JOB_ID)
QUALIFY ROW_NUMBER() OVER(PARTITION BY assignee_id, job_type ORDER BY change_timestamp DESC) = 1
AND action != 'DELETE';

Sostituisci quanto segue:

  • REGION: la regione in cui si trova la prenotazione
  • RESERVATION_NAME: il nome della prenotazione utilizzata dall'assegnazione
  • PROJECT_ID: l'ID del tuo progetto Google Cloud in cui è stato eseguito il job
  • JOB_ID: l'ID job rispetto al quale è stato controllato lo stato dell'assegnazione