Disponibilità delle funzionalità SQL precedenti

Questo documento descrive le prossime limitazioni alla disponibilità di BigQuery SQL precedente, che si basano sull'utilizzo durante un periodo di valutazione ed entrano in vigore dopo il 1° giugno 2026. Queste modifiche fanno parte della transizione di BigQuery dall'SQL precedente a GoogleSQL, il dialetto consigliato e conforme allo standard ANSI per BigQuery.

La migrazione a GoogleSQL offre i seguenti vantaggi rispetto a SQL precedente:

Come funziona la disponibilità delle funzionalità

BigQuery monitora l'utilizzo delle funzionalità SQL precedente durante un periodo di valutazione. Per le organizzazioni e i progetti che non utilizzano SQL precedente tra il 1° novembre 2025 e il 1° giugno 2026, SQL precedente non sarà più disponibile dopo la fine del periodo di valutazione. Per le organizzazioni e i progetti che utilizzano SQL precedente durante il periodo di valutazione, puoi continuare a eseguire query utilizzando l'insieme specifico di funzionalità SQL precedenti che utilizzi.

L'utilizzo delle funzionalità viene aggregato a livello di organizzazione. Se un progetto all'interno di un'organizzazione utilizza una funzionalità, questa rimane disponibile per tutti gli altri progetti dell'organizzazione. Per i progetti non associati a un'organizzazione, la disponibilità delle funzionalità viene gestita a livello di progetto.

Set di funzionalità SQL precedenti

Le funzionalità di SQL precedente sono organizzate in tre gruppi di funzionalità: funzionalità di base del linguaggio, funzionalità estese del linguaggio e raggruppamenti di funzioni. Le sezioni seguenti descrivono in dettaglio le funzionalità di ogni insieme.

Funzionalità di base della lingua

Queste funzionalità sono il fulcro di SQL precedente. L'intero insieme di funzionalità è disponibile per qualsiasi organizzazione o progetto autonomo che esegue almeno una query SQL precedente durante il periodo di valutazione.

Categoria Funzionalità
Sintassi delle query
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
Logica delle espressioni Valori letterali:
  • TRUE
  • FALSE
  • NULL

Operatori logici:
  • AND
  • OR
  • NOT

Funzioni di confronto:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

Istruzioni di controllo del flusso:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
Operazioni di base Operatori aritmetici:
  • +
  • -
  • *
  • /
  • %

Funzioni di aggregazione di base:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
Elementi di dati Tipi di dati di base:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

Tipi di dati strutturati e parzialmente supportati:
  • Numerico esatto: NUMERIC, BIGNUMERIC
  • Ora civile:DATE, TIME, DATETIME
  • Campi strutturati: campi nidificati, campi ripetuti

Funzioni di trasmissione:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

Forzature:sono incluse tutte le forzature automatiche del tipo di dati.

Funzionalità linguistiche estese

Questa categoria include funzionalità SQL precedente specifiche che vanno oltre il set di base. A differenza delle funzionalità di base o dei raggruppamenti di funzioni, ogni funzionalità di questa categoria viene monitorata singolarmente. Devi utilizzare esplicitamente ogni funzionalità durante il periodo di valutazione per mantenerla disponibile.

Categoria Funzionalità
Funzionalità estese

Raggruppamenti di funzioni

Le funzioni integrate sono organizzate in categorie correlate. L'utilizzo di una singola funzione all'interno di un raggruppamento durante il periodo di valutazione rende disponibili tutte le funzioni dell'intero raggruppamento.

Raggruppamento di funzioni Funzioni
Funzioni finestra avanzate
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • RATIO_TO_REPORT
  • ROW_NUMBER
Funzioni di aggregazione per le statistiche
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
Funzioni di aggregazione che restituiscono un campo ripetuto
  • NEST
  • QUANTILES
  • UNIQUE
Funzioni di aggregazione con operazioni sui bit
  • BIT_AND
  • BIT_OR
  • BIT_XOR
Funzioni di aggregazione con concatenazione
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
Funzioni di aggregazione con ordinamento
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
Funzioni finestra di base
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
Funzioni bitwise
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
Espressioni condizionali
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
Funzioni di conversione
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
Funzioni di ora attuale
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
Funzioni dell'utente corrente
  • CURRENT_USER
Funzioni di data e ora
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
Funzione RAND
  • RAND
Funzioni che restituiscono un campo ripetuto
  • POSITION
  • SPLIT
Funzioni di hashing
  • HASH
  • SHA1
  • FARM_FINGERPRINT
Funzioni IP
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
Funzioni JSON
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
Funzioni matematiche
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
Funzioni iperboliche matematiche
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
Parte delle funzioni TIMESTAMP
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
Funzioni di espressioni regolari
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
Funzioni di stringa
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
Funzioni URL
  • HOST
  • DOMAIN
  • TLD
Funzioni di timestamp UNIX
  • FORMAT_UTC_USEC
  • MSEC_TO_TIMESTAMP
  • PARSE_UTC_USEC
  • SEC_TO_TIMESTAMP
  • STRFTIME_UTC_USEC
  • TIMESTAMP_TO_SEC
  • TIMESTAMP_TO_MSEC
  • TIMESTAMP_TO_USEC
  • USEC_TO_TIMESTAMP
  • UTC_USEC_TO_DAY
  • UTC_USEC_TO_HOUR
  • UTC_USEC_TO_MONTH
  • UTC_USEC_TO_WEEK
  • UTC_USEC_TO_YEAR

Esempi di disponibilità delle funzionalità

I seguenti esempi mostrano come funziona la disponibilità delle funzionalità.

Esempio: accesso alle funzionalità di base della lingua

Un progetto esegue una query SQL precedente durante il periodo di valutazione. Supponiamo che la tabella T contenga una colonna X di tipo INTEGER.

#legacySQL
SELECT X FROM T

Questo utilizzo garantisce che tutti i progetti all'interno dell'organizzazione mantengano la possibilità di eseguire query che utilizzano qualsiasi funzionalità del set di funzionalità di base del linguaggio. Ad esempio, la seguente query continua a funzionare:

#legacySQL
SELECT X FROM T WHERE X > 10

Esempio: utilizzo dei raggruppamenti di funzioni

Un progetto utilizza una funzione di un raggruppamento di funzioni specifico. Supponiamo che la tabella T contenga una colonna X di tipo FLOAT.

#legacySQL
SELECT SIN(X) FROM T

L'utilizzo della funzione SIN() rende disponibile l'intero raggruppamento delle funzioni matematiche. Di conseguenza, tutti i progetti all'interno dell'organizzazione possono utilizzare qualsiasi altra funzione di questo raggruppamento, ad esempio COS().

#legacySQL
SELECT COS(X) FROM T

Al contrario, la seguente query non riesce dopo il periodo di valutazione se nessun progetto nell'organizzazione utilizza una funzione delle funzioni di aggregazione per il raggruppamento delle statistiche.

#legacySQL
SELECT STDDEV(X) FROM T

Esempio: conservazione delle funzionalità in tabelle diverse

Supponiamo che la tabella X abbia una colonna A (INTEGER) e la tabella Y abbia una colonna B (FLOAT). Un progetto esegue la seguente query durante il periodo di valutazione:

#legacySQL
SELECT SIN(A) FROM X

L'organizzazione può eseguire la seguente query al termine del periodo di valutazione. La query funziona perché la funzionalità delle funzioni matematiche è stata mantenuta dalla prima query. La conservazione è indipendente dalla tabella specifica, dal nome della colonna o dal tipo di dati utilizzato, poiché sia INTEGER che FLOAT fanno parte della funzionalità di base del linguaggio.

#legacySQL
SELECT COS(B) FROM Y

Esempio: query complessa

Supponiamo che la tabella T contenga una colonna X di tipo STRING. Un progetto esegue la seguente query durante il periodo di valutazione:

#legacySQL
SELECT value, AVG(FLOAT(value)) OVER (ORDER BY value) AS avg
 FROM (
  SELECT LENGTH(SPLIT(X, ',')) AS value
    FROM T
)

Questa query utilizza funzionalità delle funzionalità di base del linguaggio e tre raggruppamenti di funzioni: funzioni finestra di base, funzioni stringa e funzioni che restituiscono valori ripetuti. Tutti i progetti all'interno dell'organizzazione mantengono queste funzionalità. Pertanto, una nuova query che utilizza una combinazione diversa di funzioni rispetto a quelli stessi set di funzionalità conservati ha esito positivo.

#legacySQL
SELECT value, COUNT(STRING(value)) OVER (ORDER BY value) as count
 FROM (
  SELECT CONCAT(SPLIT(X, ','), '123') AS value
    FROM T
)

Domande frequenti

Una nuova organizzazione può utilizzare SQL precedente?

Al termine del periodo di valutazione, SQL precedente non è disponibile per le nuove organizzazioni o i nuovi progetti. In casi speciali, puoi richiedere un'esenzione. Se non riesci ad accedere a Moduli Google, invia un'email all'indirizzo bq-legacysql-support@google.com con il tuo ID organizzazione, i livelli di utilizzo attuali, la data di utilizzo recente, le sfide di migrazione e una cronologia stimata per la transizione a GoogleSQL.

Le query SQL precedente esistenti smettono di funzionare?

Le query esistenti continueranno a funzionare finché tutte le funzionalità SQL precedente che utilizzano sono state utilizzate da almeno un progetto della tua organizzazione durante il periodo di valutazione. Una query potrebbe non riuscire se si basa su una funzionalità che non è stata utilizzata durante questo periodo, pertanto ti consigliamo di assicurarti che vengano eseguite tutte le query critiche.

Un'organizzazione esistente che utilizza SQL precedente può creare nuovi progetti che lo utilizzano?

Sì. Tutte le funzionalità a cui ha avuto accesso qualsiasi progetto della tua organizzazione durante il periodo di valutazione rimangono disponibili per tutti i progetti, vecchi e nuovi, della tua organizzazione.

Esiste uno strumento per verificare quali funzionalità SQL precedente utilizza la mia organizzazione?

Non esiste uno strumento per controllare l'utilizzo di funzionalità specifiche. Puoi monitorare l'utilizzo di SQL precedente eseguendo query sulle viste INFORMATION_SCHEMA.JOBS come descritto in Conteggio dei job di query SQL precedenti per progetto. Puoi anche esaminare i log delle query in Cloud Logging per verificare l'utilizzo di una sintassi specifica.

Devo eseguire la migrazione a GoogleSQL?

La migrazione non è obbligatoria, ma è consigliata. GoogleSQL è il dialetto moderno, completo e consigliato.

Cosa succede se una query SQL precedente utilizzata raramente non viene eseguita durante il periodo di valutazione?

Per assicurarti che una query continui a funzionare, eseguila una volta durante il periodo di valutazione. Se non riesci a eseguirlo in quel momento, puoi richiedere un'esenzione. Se non riesci ad accedere a Moduli Google, invia un'email all'indirizzo bq-legacysql-support@google.com con l'ID organizzazione, i livelli di utilizzo attuali, la data di utilizzo recente, le difficoltà di migrazione e una cronologia stimata per la transizione a GoogleSQL.

Passaggi successivi

  • Per eseguire la migrazione delle query dall'SQL precedente a GoogleSQL, consulta la guida alla migrazione.