Esempi di query SQL

Questo documento contiene query di esempio sulle voci di log archiviate nei bucket di log di cui è stato eseguito l'upgrade per utilizzare Analisi dei log. Su questi bucket puoi eseguire query SQL dalla pagina Analisi dei log nella console Google Cloud. Per altri esempi, consulta i repository GitHub logging-analytics-samples e security-analytics.

Questo documento non descrive SQL o come instradare e archiviare le voci di log. Per informazioni su questi argomenti, consulta la sezione Passaggi successivi.

Prima di iniziare

  • Per utilizzare le query mostrate in questo documento nella pagina Analisi dei log, sostituite TABLE_NAME_OF_LOG_VIEW con il nome della tabella per la visualizzazione dei log su cui eseguire la query. Questo nome ha il formato project_ID.region.bucket_ID.view_ID.

    Per identificare questo nome, vai all'elenco Visualizzazioni log nella pagina Analisi dei log, individua la visualizzazione log e poi seleziona Query. Il riquadro Query viene compilato con una query predefinita, che include il nome della tabella per la vista del log su cui viene eseguita la query. Per informazioni su come accedere alla query predefinita, consulta Eseguire query su una visualizzazione di log.

  • Per utilizzare le query mostrate in questo documento nella pagina BigQuery Studio, sostituisci TABLE_NAME_OF_LOG_VIEW con il percorso alla tabella nel set di dati collegato. Ad esempio, per eseguire una query sulla vista _AllLogs nel set di dati collegato mydataset che si trova nel progetto myproject, imposta questo campo su myproject.mydataset._AllLogs:

    Nella console Google Cloud, vai alla pagina BigQuery:

    Vai a BigQuery Studio

    Puoi trovare questa pagina anche utilizzando la barra di ricerca.

  • Per aprire la pagina Log Analytics:

    1. Nella console Google Cloud, vai alla pagina Log Analytics:

      Vai ad Analisi dei log

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

    2. (Facoltativo) Per identificare lo schema della visualizzazione log, nell'elenco Visualizzazioni log, individua la visualizzazione e poi seleziona il nome della visualizzazione.

    Viene visualizzato lo schema. Puoi utilizzare il campo Filtra per individuare campi specifici. Non puoi modificare lo schema.

Filtra log

Le query SQL determinano quali voci della visualizzazione del log elaborare, quindi raggruppano queste voci ed eseguono operazioni aggregate. Quando non sono elencate operazioni di raggruppamento e aggregazione, il risultato della query include le righe selezionate dall'operazione di filtro. Gli esempi in questa sezione illustrano il filtro.

Filtra per ora

Per impostare l'intervallo di tempo della query, ti consigliamo di utilizzare il selettore dell'intervallo di tempo. Questo selettore viene utilizzato automaticamente quando una query non specifica un campo timestamp nella clausola WHERE. Ad esempio, per visualizzare i dati della settimana precedente, seleziona Ultimi 7 giorni dal selettore dell'intervallo di tempo. Puoi anche utilizzare il selettore dell'intervallo di ore per specificare un'ora di inizio e una di fine, un'ora di visualizzazione e cambiare i fusi orari.

Se includi un campo timestamp nella clausola WHERE, l'impostazione del selettore di intervallo di tempo non viene utilizzata. L'esempio seguente filtra i dati utilizzando la funzione TIMESTAMP_SUB, che consente di specificare un intervallo di tempo dall'ora corrente:

WHERE
  timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)

Per ulteriori informazioni su come filtrare in base all'ora, consulta Funzioni di data e ora e Funzioni di timestamp.

Filtra per risorsa

Per filtrare in base alla risorsa, aggiungi una limitazione resource.type.

Ad esempio, la seguente query legge l'ora di dati più recente, quindi conserva le righe il cui tipo di risorsa corrisponde a gce_instance, quindi ordina e mostra fino a 100 voci:

SELECT
  timestamp, log_name, severity, json_payload, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  resource.type = "gce_instance"
ORDER BY timestamp ASC
LIMIT 100

Filtra per gravità

Puoi filtrare in base a una gravità specifica con una limitazione come severity = 'ERROR'. Un'altra opzione è utilizzare l'istruzione IN e specificare un insieme di valori validi.

Ad esempio, la seguente query legge l'ora di dati più recente e poi conserva solo le righe che contengono un campo severity il cui valore è 'INFO' o 'ERROR':

SELECT
  timestamp, log_name, severity, json_payload, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  severity IS NOT NULL AND
  severity IN ('INFO', 'ERROR')
ORDER BY timestamp ASC
LIMIT 100

La query precedente filtra in base al valore del campo severity. Tuttavia, puoi anche scrivere query che filtrano in base al valore numerico della gravità del log. Ad esempio, se sostituisci le righe severity con le righe seguenti, la query restituisce tutte le voci di log il cui livello di gravità è almeno NOTICE:

  severity_number IS NOT NULL AND
  severity_number > 200

Per informazioni sui valori enumerati, consulta LogSeverity.

Filtra per nome del log

Per filtrare in base al nome di un log, puoi aggiungere una limitazione al valore del campo log_name o log_id. Il campo log_name include il percorso della risorsa. In altre parole, questo campo ha valori come projects/myproject/logs/mylog. Il campo log_id memorizza solo il nome del log, ad esempio mylog.

Ad esempio, la seguente query legge l'ora di dati più recente, quindi conserva le righe in cui il valore nel campo log_id è cloudaudit.googleapis.com/data_access, quindi ordina e mostra i risultati:

SELECT
  timestamp, log_id, severity, json_payload, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  log_id = "cloudaudit.googleapis.com/data_access"
ORDER BY timestamp ASC
LIMIT 100

Filtra per etichetta della risorsa

La maggior parte dei descrittori risorsa monitorata definisce etichette utilizzate per identificare la risorsa specifica. Ad esempio, il descrittore di un'istanza Compute Engine include etichette per la zona, l'ID progetto e l'ID istanza. Quando viene scritta la voce di log, i valori vengono assegnati a ciascun campo. Di seguito è riportato un esempio di questo tipo:

{
   type: "gce_instance"
   labels: {
      instance_id: "1234512345123451"
      project_id: "my-project"
      zone: "us-central1-f"
   }
}

Poiché il tipo di dati del campo labels è JSON, l'inclusione di una limitazione come resource.labels.zone = "us-centra1-f" in una query genera un errore di sintassi. Per ottenere il valore di un campo con un tipo di dati JSON, utilizza la funzione JSON_VALUE.

Ad esempio, la seguente query legge i dati più recenti e poi conserva quelle righe in cui la risorsa è un'istanza Compute Engine situata nella zona us-central1-f:

SELECT
  timestamp, log_name, severity, JSON_VALUE(resource.labels.zone) AS zone, json_payload, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  resource.type = "gce_instance" AND
  JSON_VALUE(resource.labels.zone) = "us-central1-f"
ORDER BY timestamp ASC
LIMIT 100

Per informazioni su tutte le funzioni che possono recuperare e trasformare i dati JSON, consulta Funzioni JSON.

Filtra per richiesta HTTP

Per filtrare la visualizzazione log in modo da includere solo le voci di log corrispondenti a una richiesta o una risposta HTTP, aggiungi una limitazione http_request IS NOT NULL:

SELECT
  timestamp, log_name, severity, http_request, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  http_request IS NOT NULL
ORDER BY timestamp
LIMIT 100

La seguente query include solo le righe corrispondenti alle richieste GET o POST:

SELECT
  timestamp, log_name, severity, http_request, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  http_request IS NOT NULL AND
  http_request.request_method IN ('GET', 'POST')
ORDER BY timestamp ASC
LIMIT 100

Filtra per stato HTTP

Per filtrare in base allo stato HTTP, modifica la clausola WHERE in modo da richiedere la definizione del campo http_request.status:

SELECT
  timestamp, log_name, http_request.status, http_request, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  http_request IS NOT NULL AND
  http_request.status IS NOT NULL
ORDER BY timestamp ASC
LIMIT 100

Per determinare il tipo di dati memorizzati in un campo, visualizza lo schema o il campo. I risultati della query precedente mostrano che il campo http_request.status memorizza valori interi.

Filtrare per un campo con un tipo JSON

Per estrarre un valore da una colonna il cui tipo di dati è JSON, utilizza la funzione JSON_VALUE.

Considera le seguenti query:

SELECT
  json_payload
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  json_payload.status IS NOT NULL

e

SELECT
  json_payload
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  JSON_VALUE(json_payload.status) IS NOT NULL

Le query precedenti testano il valore del campo json_payload nella voce di log. Entrambe le query eliminano le voci di log che non contengono un campo denominato json_payload. La differenza tra queste due query è la riga finale, che definisce gli elementi rispetto ai quali viene eseguito il test NULL. Ora prendi in considerazione una visualizzazione di log con due voci di log. Per una voce di log, il campo json_payload ha il seguente formato:

{
    status: {
        measureTime: "1661517845"
    }
}

Per l'altra voce di log, il campo json_payload ha una struttura diversa:

{
    @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"
    jobName: "projects/my-project/locations/us-central1/jobs/test1"
    relativeUrl: "/food=cake"
    status: "NOT_FOUND"
    targetType: "APP_ENGINE_HTTP"
}

Entrambe le voci di log precedenti soddisfano la limitazionejson_payload.status IS NOT NULL. In altre parole, il risultato della prima query include entrambe le voci di log. Tuttavia, quando la limitazione è JSON_VALUE(json_payload.status) IS NOT NULL, solo la seconda voce di log è inclusa nel risultato della query.

Filtra per espressione regolare

Per restituire la sottostringa che corrisponde a un'espressione regolare, utilizza la funzione REGEXP_EXTRACT. Il tipo di ritorno di questa funzione è STRING o BYTES.

La seguente query mostra le voci di log più recenti ricevute, conserva quelle con un campo json_payload.jobName e poi mostra la parte del nome che inizia con test:

SELECT
  timestamp, REGEXP_EXTRACT(JSON_VALUE(json_payload.jobName), r".*(test.*)$") AS name,
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  json_payload.jobName IS NOT NULL
ORDER BY timestamp DESC
LIMIT 20

Per altri esempi, consulta la documentazione di REGEXP_EXTRACT. Per esempi di altre espressioni regolari che puoi utilizzare, consulta Funzioni, operatori e condizioni.

La query mostrata in questo esempio non è efficiente. Per una corrispondenza di sottostringa, come quella illustrata, utilizza la funzione CONTAINS_SUBSTR.

Raggruppa e aggrega le voci di log

Questa sezione si basa sugli esempi precedenti e illustra come puoi agrupare e aggregare le voci di log. Se non specifichi un raggruppamento, ma specifichi un'aggregazione, viene stampato un singolo risultato perché SQL tratta tutte le righe che soddisfano la clausola WHERE come un unico gruppo.

Ogni espressione SELECT deve essere inclusa nei campi di gruppo o essere aggregata.

Raggruppa per ora

Per raggruppare i dati in base al tempo, utilizza la funzione TIMESTAMP_TRUNC, che tronca un timestamp a una granularità specificata, ad esempio MINUTE. Ad esempio, un timestamp di 15:30:11, che ha il formato hours:minutes:seconds, diventa 15:30:00 quando la granularità è impostata su MINUTE.

La seguente query legge i dati ricevuti nell'intervallo specificato dal selettore dell'intervallo di tempo e poi conserva le righe in cui il valore del campo json_payload.status non è NULL. La query tronca il timestamp di ogni riga per ora e poi raggruppa le righe in base al timestamp e allo stato troncati:

SELECT
  TIMESTAMP_TRUNC(timestamp, HOUR) AS hour,
  JSON_VALUE(json_payload.status) AS status,
  COUNT(*) AS count
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  json_payload IS NOT NULL AND
  JSON_VALUE(json_payload.status) IS NOT NULL
GROUP BY hour,status
ORDER BY hour ASC

Per altri esempi, consulta la documentazione di TIMESTAMP_TRUNC. Per informazioni su altre funzioni basate sul tempo, consulta Funzioni relative a data e ora.

Raggruppa per risorsa

La seguente query legge l'ora di dati più recente e raggruppa le voci di log per tipo di risorsa. Quindi conteggia il numero di righe per ogni tipo di risorsa e restituisce una tabella con due colonne. La prima colonna elenca il tipo di risorsa, mentre la seconda colonna indica il numero di righe per quel tipo di risorsa:

SELECT
   resource.type, COUNT(*) AS count
FROM
  `TABLE_NAME_OF_LOG_VIEW`
GROUP BY resource.type
LIMIT 100

Raggruppa per gravità

La seguente query legge l'ora più recente dei dati e poi conserva le righe con un campo di gravità. La query raggruppa quindi le righe in base alla gravità e conteggia il numero di righe per ogni gruppo:

SELECT
  severity, COUNT(*) AS count
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  severity IS NOT NULL
GROUP BY severity
ORDER BY severity
LIMIT 100

Raggruppa per log_id

Il risultato della seguente query è una tabella con due colonne. La prima colonna elenca i nomi dei log e la seconda elenca il numero di voci di log scritte nel log. La query ordina i risultati in base al numero di voci:

SELECT
  log_id, COUNT(*) AS count
FROM
  `TABLE_NAME_OF_LOG_VIEW`
GROUP BY log_id
ORDER BY count DESC
LIMIT 100

Calcolo della latenza media per la richiesta HTTP

La query seguente illustra il raggruppamento per più colonne e il calcolo di un valore medio. La query raggruppa le righe in base all'URL contenuto nella richiesta HTTP e al valore del campo labels.checker_location. Dopo aver raggruppato le righe, la query calcola la latenza media per ogni gruppo:

SELECT
  JSON_VALUE(labels.checker_location) AS location,
  AVG(http_request.latency.seconds) AS secs, http_request.request_url
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  http_request IS NOT NULL AND
  http_request.request_method IN ('GET')
GROUP BY http_request.request_url, location
ORDER BY location
LIMIT 100

Nell'espressione precedente, JSON_VALUE è necessario per estrarre il valore del campo labels.checker_location perché il tipo di dati per labels è JSON. Tuttavia, non utilizzi questa funzione per estrarre il valore dal campo http_request.latency.seconds. Quest'ultimo campo ha un tipo di dato intero.

Calcolare i byte medi inviati per un test della sottorete

La seguente query illustra come visualizzare il numero medio di byte inviati in base alla località.

La query legge l'ora più recente dei dati e conserva solo le righe la cui colonna del tipo di risorsa è gce_subnetwork e la cui colonna json_payload non è NULL. Successivamente, la query raggruppa le righe in base alla posizione della risorsa. A differenza dell'esempio precedente, in cui i dati sono archiviati come valore numerico, il valore del campo bytes_sent è una stringa e, pertanto, devi convertirlo in FLOAT64 prima di calcolare la media:

SELECT JSON_VALUE(resource.labels.location) AS location,
   AVG(CAST(JSON_VALUE(json_payload.bytes_sent) AS FLOAT64)) AS bytes
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  resource.type = "gce_subnetwork" AND
  json_payload IS NOT NULL
GROUP BY location
LIMIT 100

Il risultato della query precedente è una tabella in cui ogni riga elenca una località e i byte inviati in media per quella località.

Per informazioni su tutte le funzioni che possono recuperare e trasformare i dati JSON, consulta Funzioni JSON.

Per informazioni su CAST e su altre funzioni di conversione, consulta Funzioni di conversione.

Conta le voci di log con un campo che corrisponde a un pattern

Per restituire la sottostringa che corrisponde a un'espressione regolare, utilizza la funzione REGEXP_EXTRACT. Il tipo di ritorno di questa funzione è STRING o BYTES.

La seguente query conserva le voci di log per le quali il valore del campo json_payload.jobName non è NULL. Quindi raggruppa le voci in base al suffisso del nome che inizia con test. Infine, la query conteggia il numero di voci in ogni gruppo:

SELECT
  REGEXP_EXTRACT(JSON_VALUE(json_payload.jobName), r".*(test.*)$") AS name,
  COUNT(*) AS count
FROM
  `TABLE_NAME_OF_LOG_VIEW`
WHERE
  json_payload.jobName IS NOT NULL
GROUP BY name
ORDER BY count
LIMIT 20

Per altri esempi, consulta la documentazione di REGEXP_EXTRACT. Per esempi di altre espressioni regolari che puoi utilizzare, consulta Funzioni, operatori e condizioni.

Questa sezione descrive due approcci diversi che puoi utilizzare per eseguire ricerche in più colonne di una tabella.

Per cercare in una visualizzazione del log le voci corrispondenti a un insieme di termini di ricerca, usa la funzione SEARCH. Questa funzione richiede due parametri: dove cercare e la query di ricerca. Poiché la funzione SEARCH ha regole specifiche su come vengono cercati i dati, consigliamo di leggere la documentazione di SEARCH.

La seguente query conserva solo le righe con un campo corrispondente esattamente a "35.193.12.15":

SELECT
  timestamp, log_id, proto_payload, severity, resource.type, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW` AS t
WHERE
  proto_payload IS NOT NULL AND
  log_id = "cloudaudit.googleapis.com/data_access" AND
  SEARCH(t,"`35.193.12.15`")
ORDER BY timestamp ASC
LIMIT 20

Nella query precedente, le barre graffe racchiudono il valore da cercare. In questo modo, la funzione SEARCH cercherà una corrispondenza esatta tra un valore di campo e il valore tra i simboli ".

Quando le barre graffe vengono omesse nella stringa di query, questa viene suddivisa in base alle regole definite nella documentazione di SEARCH. Ad esempio, quando viene eseguito il seguente statement, la stringa di query viene suddivisa in quattro token: "35", "193", "12" e "15":

  SEARCH(t,"35.193.12.15")

L'istruzione SEARCH precedente corrisponde a una riga quando un singolo campo corrisponde a tutti e quattro i token. L'ordine dei token non è importante.

Puoi includere più istruzioni SEARCH in una query. Ad esempio, nella query precedente, puoi sostituire il filtro sull'ID log con un'istruzione come la seguente:

  SEARCH(t,"`cloudaudit.googleapis.com/data_access`")

L'istruzione precedente cerca in ogni campo delle voci di log nella visualizzazione dei log, mentre l'istruzione originale cerca solo nel campo log_id delle voci di log.

Per eseguire più ricerche in più campi, separa le singole stringhe con uno spazio. Ad esempio, l'istruzione seguente corrisponde alle righe in cui un campo contiene "Hello World", "happy" e "days":

  SEARCH(t,"`Hello World` happy days")

Infine, puoi cercare in campi specifici anziché in un'intera tabella. Ad esempio, l'istruzione seguente cerca solo le colonne denominate text_payload e json_payload:

   SEARCH((text_payload, json_payload) ,"`35.222.132.245`")

Per informazioni su come vengono elaborati i parametri della funzione SEARCH, consulta la pagina di riferimento di BigQuery Funzioni di ricerca.

Per eseguire un test senza distinzione tra maiuscole e minuscole per determinare se un valore esiste in un'espressione, utilizza la funzione CONTAINS_SUBSTR. Questa funzione restituisce TRUE se il valore esiste e FALSE in caso contrario. Il valore di ricerca deve essere un valore letterale STRING, ma non il valore letterale NULL.

Ad esempio, la seguente query recupera tutte le voci degli audit log degli accessi ai dati con un indirizzo IP specifico i cui timestamp rientrano in un intervallo di tempo specifico. Infine, la query ordina i risultati e mostra i 20 più vecchi:

SELECT
  timestamp, log_id, proto_payload, severity, resource.type, resource, labels
FROM
  `TABLE_NAME_OF_LOG_VIEW` AS t
WHERE
  proto_payload IS NOT NULL AND
  log_id = "cloudaudit.googleapis.com/data_access" AND
  CONTAINS_SUBSTR(t,"35.193.12.15")
ORDER BY timestamp ASC
LIMIT 20

La query precedente esegue un test di sottostringa. Pertanto, una riga contenente "35.193.12.152" corrisponde all'istruzione CONTAINS_SUBSTR.

Combinare i dati di più origini

Le istruzioni di query analizzano una o più tabelle o espressioni e restituiscono le righe del risultato calcolato. Ad esempio, puoi utilizzare le istruzioni di query per unire i risultati delle istruzioni SELECT in tabelle o set di dati diversi in diversi modi e poi selezionare le colonne dai dati combinati.

Combinare i dati di due tabelle con le unioni

Per combinare le informazioni di due tabelle, utilizza uno degli operatori di join. Il tipo di join e la clausola condizionale che utilizzi determinano come le righe vengono combinate e eliminate.

La seguente query fornisce i campi json_payload dalle righe di due tabelle diverse scritte dallo stesso intervallo di traccia. La query esegue un JOIN interno su due tabelle per le righe in cui i valori delle colonne span_id e trace in entrambe le tabelle corrispondono. Da questo risultato, la query seleziona i campi timestamp, severity e json_payload provenienti da TABLE_NAME_OF_LOG_VIEW_1, il campo json_payload da TABLE_NAME_OF_LOG_VIEW_2 e i valori dei campi span_id e trace su cui sono state unite le due tabelle e restituisce fino a 100 righe:

SELECT
  a.timestamp, a.severity, a.json_payload, b.json_payload, a.span_id, a.trace
FROM `TABLE_NAME_OF_LOG_VIEW_1` a
JOIN `TABLE_NAME_OF_LOG_VIEW_2` b
ON
  a.span_id = b.span_id AND
  a.trace = b.trace
LIMIT 100

Combinare più selezioni con le unioni

Per combinare i risultati di due o più istruzioni SELECT ed eliminare le righe duplicate, utilizza l'operatore UNION. Per conservare le righe duplicate, utilizza l'operatore UNION ALL.

La seguente query legge l'ora più recente di dati da TABLE_NAME_OF_LOG_VIEW_1, unisce il risultato con l'ora più recente di dati da TABLE_NAME_OF_LOG_VIEW_2, ordina i dati uniti in base al timestamp crescente e poi mostra le 100 voci più vecchie:

SELECT
  timestamp, log_name, severity, json_payload, resource, labels
FROM(
  SELECT * FROM `TABLE_NAME_OF_LOG_VIEW_1`
  UNION ALL
  SELECT * FROM `TABLE_NAME_OF_LOG_VIEW_2`
)
ORDER BY timestamp ASC
LIMIT 100

Rimuovere le voci di log duplicate

Log Analytics non rimuove le voci di log duplicate prima dell'esecuzione di una query. Questo comportamento è diverso da quello che si verifica quando esegui query sulle voci di log utilizzando Logs Explorer, che rimuove le voci duplicate confrontando i nomi dei log, i timestamp e i campi ID inserimento.

Puoi utilizzare la convalida a livello di riga per rimuovere le voci di log duplicate.

Per ulteriori informazioni, consulta Risoluzione dei problemi: nei risultati di Log Analytics sono presenti voci di log duplicate.

Limitazioni

Le query utilizzate nella pagina Log Analytics supportano le funzioni GoogleSQL con alcune eccezioni.

I seguenti comandi SQL non sono supportati per le query SQL eseguite utilizzando la pagina Log Analytics:

  • Comandi DDL e DML
  • Funzioni definite dall'utente di JavaScript
  • Funzioni BigQuery ML
  • Variabili SQL

I seguenti elementi sono supportati solo quando esegui query su un set di dati collegato utilizzando le pagine BigQuery Studio e Looker Studio e lo strumento a riga di comando bq:

  • Funzioni definite dall'utente di JavaScript
  • Funzioni BigQuery ML
  • Variabili SQL

Passaggi successivi

Per informazioni su come instradare e archiviare le voci di log, consulta i seguenti documenti:

Per la documentazione di riferimento di SQL, consulta i seguenti documenti: