Disponibilidade de recursos do SQL legado

Este documento descreve as restrições futuras à disponibilidade do SQL legado do BigQuery, que são baseadas no uso durante um período de avaliação e entram em vigor após 1º de junho de 2026. Essas mudanças fazem parte da transição do BigQuery do SQL legado para o GoogleSQL, o dialeto recomendado e compatível com ANSI para o BigQuery.

A migração para o GoogleSQL oferece estes benefícios em relação ao SQL legado:

Como funciona a disponibilidade de recursos

O BigQuery monitora o uso de recursos do SQL legado durante um período de avaliação. Para organizações e projetos que não usam o SQL legado entre 1º de novembro de 2025 e 1º de junho de 2026, o SQL legado fica indisponível após o fim do período de avaliação. Para organizações e projetos que usam o SQL legado durante o período de avaliação, é possível continuar executando consultas usando o conjunto específico de recursos do SQL legado que você usa.

O uso de recursos é agregado no nível da organização. Se um projeto em uma organização usar um recurso, ele vai continuar disponível para todos os outros projetos na organização. Para projetos não associados a uma organização, a disponibilidade de recursos é gerenciada no nível do projeto.

Conjuntos de recursos do SQL legado

Os recursos do SQL legado são organizados em três conjuntos de recursos: recursos básicos de linguagem, recursos avançados de linguagem e agrupamentos de funções. As seções a seguir detalham os recursos de cada conjunto.

Recursos básicos de linguagem

Esses recursos são a base do SQL legado. Todo esse conjunto de recursos está disponível para qualquer organização ou projeto independente que execute pelo menos uma consulta SQL legada durante o período de avaliação.

Categoria Recursos
Sintaxe das consultas
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
Lógica de expressão Literais:
  • TRUE
  • FALSE
  • NULL

Operadores lógicos:
  • AND
  • OR
  • NOT

Funções de comparação:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

Instruções de fluxo de controle:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
Operações básicas Operadores aritméticos:
  • +
  • -
  • *
  • /
  • %

Funções de agregação básicas:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
Elementos de dados Tipos de dados básicos:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

Tipos de dados estruturados e parcialmente compatíveis:
  • Numérico exato: NUMERIC, BIGNUMERIC
  • Tempo civil:DATE, TIME, DATETIME
  • Campos estruturados: campos aninhados, campos repetidos

Funções de conversão:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

Coerções:todas as coerções automáticas de tipo de dados estão incluídas.

Recursos de idioma avançados

Essa categoria inclui recursos específicos do SQL legado que vão além do conjunto básico. Ao contrário dos recursos básicos ou agrupamentos de funções, cada recurso nessa categoria é rastreado individualmente. É necessário usar explicitamente cada recurso durante o período de avaliação para que ele continue disponível.

Categoria Recursos
Recursos estendidos

Agrupamentos de funções

As funções integradas são organizadas em categorias relacionadas. Usar qualquer função em um agrupamento durante o período de avaliação disponibiliza todas as funções desse agrupamento.

Agrupamento de funções Funções
Funções de janela avançadas
  • 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
Funções de agregação para estatísticas
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
Funções de agregação que retornam campos repetidos
  • NEST
  • QUANTILES
  • UNIQUE
Funções de agregação com operações de bits
  • BIT_AND
  • BIT_OR
  • BIT_XOR
Funções de agregação com concatenação
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
Funções de agregação com classificação
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
Funções de janela básicas
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
Funções bit a bit
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
Expressões condicionais
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
Funções de conversão
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
Funções de hora atuais
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
Funções do usuário atual
  • CURRENT_USER
Funções de data e hora
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
Função RAND
  • RAND
Funções que retornam campos repetidos
  • POSITION
  • SPLIT
Funções de hash
  • HASH
  • SHA1
  • FARM_FINGERPRINT
Funções IP
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
Funções JSON
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
Funções matemáticas
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
Funções hiperbólicas matemáticas
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
Parte das funções TIMESTAMP
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
Funções de expressão regular
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
Funções de string
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
Funções de URL
  • HOST
  • DOMAIN
  • TLD
Funções de carimbo de data/hora do 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

Exemplos de disponibilidade de recursos

Os exemplos a seguir demonstram como a disponibilidade de recursos funciona.

Exemplo: como acessar recursos básicos de linguagem

Um projeto executa uma consulta SQL legado durante o período de avaliação. Considere que a tabela T contém uma coluna X do tipo INTEGER.

#legacySQL
SELECT X FROM T

Esse uso garante que todos os projetos na organização mantenham a capacidade de executar consultas que usam qualquer recurso do conjunto de recursos básicos de linguagem. Por exemplo, a consulta a seguir continua funcionando:

#legacySQL
SELECT X FROM T WHERE X > 10

Exemplo: usar agrupamentos de funções

Um projeto usa uma função de um agrupamento específico. Considere que a tabela T contém uma coluna X do tipo FLOAT.

#legacySQL
SELECT SIN(X) FROM T

O uso da função SIN() disponibiliza todo o agrupamento de funções matemáticas. Consequentemente, todos os projetos na organização podem usar qualquer outra função desse agrupamento, como COS().

#legacySQL
SELECT COS(X) FROM T

Por outro lado, a consulta a seguir falha após o período de avaliação se nenhum projeto na organização usar uma função das funções de agregação para agrupamento de estatísticas.

#legacySQL
SELECT STDDEV(X) FROM T

Exemplo: retenção de recursos em diferentes tabelas

Suponha que a tabela X tenha uma coluna A (INTEGER) e a tabela Y tenha a coluna B (FLOAT). Um projeto executa a seguinte consulta durante o período de avaliação:

#legacySQL
SELECT SIN(A) FROM X

A organização pode executar a seguinte consulta após o fim do período de avaliação. A consulta funciona porque o recurso de funções matemáticas foi mantido pela primeira consulta. A retenção é independente da tabela específica, do nome da coluna ou do tipo de dados usado, já que INTEGER e FLOAT fazem parte da capacidade básica da linguagem.

#legacySQL
SELECT COS(B) FROM Y

Exemplo: consulta complexa

Considere que a tabela T contenha uma coluna X do tipo STRING. Um projeto executa a seguinte consulta durante o período de avaliação:

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

Essa consulta usa recursos das funcionalidades básicas de linguagem e três agrupamentos de funções: funções de janela básicas, funções de string e funções que retornam valores repetidos. Todos os projetos na organização mantêm esses recursos. Portanto, uma nova consulta que usa uma combinação diferente de funções dos mesmos conjuntos de recursos retidos é bem-sucedida.

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

Perguntas frequentes

Uma nova organização pode usar o SQL legado?

Após o período de avaliação, o SQL legado não estará disponível para novas organizações ou projetos. Em casos especiais, é possível pedir uma isenção. Se não for possível acessar o Google Forms, envie um e-mail para bq-legacysql-support@google.com com seu ID organizacional, níveis de uso atuais, data de uso recente, desafios de migração e um cronograma estimado para a transição para o GoogleSQL.

As consultas SQL legadas vão parar de funcionar?

As consultas atuais vão continuar funcionando enquanto todos os recursos do SQL legado usados por elas forem usados por pelo menos um projeto na sua organização durante o período de avaliação. Uma consulta pode falhar se depender de um recurso que não foi usado durante esse período. Por isso, recomendamos que você execute todas as consultas críticas.

Uma organização que usa o SQL legado pode criar novos projetos que também o utilizem?

Sim. Todos os recursos acessados por qualquer projeto na sua organização durante o período de avaliação continuam disponíveis para todos os projetos, antigos e novos, na sua organização.

Existe uma ferramenta para verificar quais recursos do SQL legado minha organização usa?

Não há uma ferramenta para auditar o uso de recursos específicos. Para acompanhar o uso do SQL legado, consulte as visualizações INFORMATION_SCHEMA.JOBS, conforme descrito em Contagem de jobs consulta SQL legado por projeto. Também é possível revisar os registros de consultas no Cloud Logging para verificar o uso de sintaxes específicas.

Preciso migrar para o GoogleSQL?

A migração não é obrigatória, mas é recomendada. O GoogleSQL é o dialeto moderno, completo e recomendado.

E se uma consulta SQL legada raramente usada não for executada durante o período de avaliação?

Para garantir que uma consulta continue funcionando, execute-a uma vez durante o período de avaliação. Se não for possível executar o teste nessa data, solicite uma exceção. Se não for possível acessar o Google Forms, envie um e-mail para bq-legacysql-support@google.com com seu ID organizacional, níveis de uso atuais, data de uso recente, desafios de migração e um cronograma estimado para a transição para o GoogleSQL.

A seguir

  • Para migrar suas consultas do SQL legado para o GoogleSQL, consulte o guia de migração.