Disponibilidad de las funciones de SQL heredado

En este documento, se describen las próximas restricciones a la disponibilidad del SQL heredado de BigQuery, que se basan en el uso durante un período de evaluación y entrarán en vigencia después del 1 de junio de 2026. Estos cambios forman parte de la transición de BigQuery del SQL heredado a GoogleSQL, el dialecto recomendado y compatible con ANSI para BigQuery.

La migración a GoogleSQL ofrece los siguientes beneficios en comparación con el SQL heredado:

Cómo funciona la disponibilidad de las funciones

BigQuery supervisa el uso de las funciones de SQL heredado durante un período de evaluación. Para las organizaciones y los proyectos que no usen SQL heredado entre el 1 de noviembre de 2025 y el 1 de junio de 2026, el SQL heredado dejará de estar disponible después de que finalice el período de evaluación. En el caso de las organizaciones y los proyectos que usan SQL heredado durante el período de evaluación, puedes seguir ejecutando consultas con el conjunto específico de funciones de SQL heredado que utilizas.

El uso de las funciones se agrega a nivel de la organización. Si algún proyecto dentro de una organización usa una función, esa función seguirá disponible para todos los demás proyectos de la organización. En el caso de los proyectos que no están asociados a una organización, la disponibilidad de las funciones se administra a nivel del proyecto.

Conjuntos de funciones de SQL heredado

Las capacidades de SQL heredado se organizan en tres conjuntos de funciones: capacidades básicas del lenguaje, capacidades extendidas del lenguaje y agrupaciones de funciones. En las siguientes secciones, se detallan las funciones de cada conjunto.

Capacidades básicas de lenguaje

Estas funciones son el núcleo del SQL heredado. Todo este conjunto de funciones está disponible para cualquier organización o proyecto independiente que ejecute al menos una consulta de SQL heredado durante el período de evaluación.

Categoría Funciones
Sintaxis de las consultas
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
Lógica de expresión Literales:
  • TRUE
  • FALSE
  • NULL

Operadores lógicos:
  • AND
  • OR
  • NOT

Funciones de comparación:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

Instrucciones de flujo de control:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
Operaciones básicas Operadores aritméticos:
  • +
  • -
  • *
  • /
  • %

Funciones de agregación básicas:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
Elementos de datos Tipos de datos básicos:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

Tipos de datos estructurados y parcialmente admitidos:
  • Numérico exacto: NUMERIC, BIGNUMERIC
  • Hora civil:DATE, TIME, DATETIME
  • Campos estructurados: Campos anidados y repetidos

Funciones de conversión:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

Coerciones: Se incluyen todas las coerciones automáticas de tipos de datos.

Capacidades de idiomas ampliadas

En esta categoría, se incluyen funciones específicas del SQL heredado que van más allá del conjunto básico. A diferencia de las capacidades básicas o las agrupaciones de funciones, cada función de esta categoría se rastrea de forma individual. Debes usar explícitamente cada función durante el período de evaluación para que siga disponible.

Categoría Funciones
Funciones extendidas

Agrupaciones de funciones

Las funciones integradas se organizan en categorías relacionadas. Usar cualquier función individual dentro de una agrupación durante el período de evaluación hace que todas las funciones de esa agrupación estén disponibles.

Agrupación de funciones Funciones
Funciones analíticas avanzadas
  • 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
Funciones de agregación para estadísticas
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
Funciones de agregación que devuelven un campo repetido
  • NEST
  • QUANTILES
  • UNIQUE
Funciones de agregación con operaciones de bits
  • BIT_AND
  • BIT_OR
  • BIT_XOR
Funciones de agregación con concatenación
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
Funciones de agregación con ordenamiento
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
Funciones de ventana básicas
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
Funciones bit a bit
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
Expresiones condicionales
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
Funciones de conversión
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
Funciones de hora actual
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
Funciones del usuario actual
  • CURRENT_USER
Funciones de fecha y hora
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
Función RAND
  • RAND
Funciones que devuelven un campo repetido
  • POSITION
  • SPLIT
Funciones de hash
  • HASH
  • SHA1
  • FARM_FINGERPRINT
Funciones de IP
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
Funciones JSON
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
Funciones matemáticas
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
Funciones hiperbólicas matemáticas
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
Parte de las funciones TIMESTAMP
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
Funciones de expresión regular
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
Funciones de string
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
Funciones de URL
  • HOST
  • DOMAIN
  • TLD
Funciones de marca de tiempo de 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

Ejemplos de disponibilidad de funciones

En los siguientes ejemplos, se muestra cómo funciona la disponibilidad de funciones.

Ejemplo: Cómo acceder a las capacidades básicas del lenguaje

Un proyecto ejecuta una consulta en SQL heredado durante el período de evaluación. Supongamos que la tabla T contiene una columna X de tipo INTEGER.

#legacySQL
SELECT X FROM T

Este uso garantiza que todos los proyectos de la organización conserven la capacidad de ejecutar consultas que usen cualquier función del conjunto de capacidades básicas del lenguaje. Por ejemplo, la siguiente consulta sigue funcionando:

#legacySQL
SELECT X FROM T WHERE X > 10

Ejemplo: Uso de agrupaciones de funciones

Un proyecto usa una función de un grupo de funciones específico. Supongamos que la tabla T contiene una columna X de tipo FLOAT.

#legacySQL
SELECT SIN(X) FROM T

El uso de la función SIN() hace que esté disponible toda la agrupación de funciones matemáticas. Por lo tanto, todos los proyectos de la organización pueden usar cualquier otra función de ese agrupamiento, como COS().

#legacySQL
SELECT COS(X) FROM T

Por el contrario, la siguiente consulta falla después del período de evaluación si ningún proyecto de la organización usa alguna función de las funciones de agregación para la agrupación de estadísticas.

#legacySQL
SELECT STDDEV(X) FROM T

Ejemplo: Retención de funciones en diferentes tablas

Supongamos que la tabla X tiene una columna A (INTEGER) y la tabla Y tiene una columna B (FLOAT). Un proyecto ejecuta la siguiente consulta durante el período de evaluación:

#legacySQL
SELECT SIN(A) FROM X

La organización puede ejecutar la siguiente consulta después de que finalice el período de evaluación. La consulta funciona porque la primera consulta conservó la función de funciones matemáticas. La retención es independiente de la tabla específica, el nombre de la columna o el tipo de datos que se usen, ya que INTEGER y FLOAT forman parte de la capacidad básica del lenguaje.

#legacySQL
SELECT COS(B) FROM Y

Ejemplo: Consulta compleja

Supongamos que la tabla T contiene una columna X de tipo STRING. Un proyecto ejecuta la siguiente consulta durante el período de evaluación:

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

Esta consulta utiliza atributos de las capacidades básicas del lenguaje y tres agrupaciones de funciones: funciones analíticas básicas, funciones de cadena y funciones que devuelven valores repetidos. Todos los proyectos de la organización conservan estas funciones. Por lo tanto, una nueva búsqueda que use una combinación diferente de funciones de esos mismos conjuntos de funciones retenidas se realizará correctamente.

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

Preguntas frecuentes

¿Puede una organización nueva usar SQL heredado?

Después del período de evaluación, el SQL heredado no estará disponible para las organizaciones o los proyectos nuevos. En casos especiales, puedes solicitar una exención. Si no puedes acceder a Formularios de Google, envía un correo electrónico a bq-legacysql-support@google.com con tu ID de organización, los niveles de uso actuales, la fecha de uso reciente, los desafíos de migración y un cronograma estimado para la transición a GoogleSQL.

¿Las consultas de SQL heredado existentes dejarán de funcionar?

Las consultas existentes seguirán funcionando siempre y cuando al menos un proyecto de tu organización haya usado todas las funciones de SQL heredado que utilizan durante el período de evaluación. Es posible que una búsqueda falle si depende de una función que no se usó durante este período, por lo que te recomendamos que te asegures de que se ejecuten todas las búsquedas críticas.

¿Una organización existente que usa SQL heredado puede crear proyectos nuevos que también lo usen?

Sí. Todas las funciones a las que accedió cualquier proyecto de tu organización durante el período de evaluación seguirán disponibles para todos los proyectos, tanto los antiguos como los nuevos, de tu organización.

¿Existe una herramienta para verificar qué funciones de SQL heredado usa mi organización?

No hay una herramienta para auditar el uso de funciones específicas. Puedes hacer un seguimiento del uso de SQL heredado consultando las vistas de INFORMATION_SCHEMA.JOBS, como se describe en Recuento de trabajos de consulta en SQL heredado por proyecto. También puedes revisar tus registros de consultas en Cloud Logging para verificar el uso de sintaxis específica.

¿Tengo que migrar a GoogleSQL?

No es obligatoria, pero sí se recomienda. GoogleSQL es el dialecto moderno, completo y recomendado.

¿Qué sucede si una consulta en SQL heredado que se usa con poca frecuencia no se ejecuta durante el período de evaluación?

Para asegurarte de que una búsqueda siga funcionando, ejecútala una vez durante el período de evaluación. Si no puedes ejecutarla en ese momento, puedes solicitar una exención. Si no puedes acceder a Formularios de Google, envía un correo electrónico a bq-legacysql-support@google.com con tu ID de organización, los niveles de uso actuales, la fecha de uso reciente, los desafíos de migración y un cronograma estimado para la transición a GoogleSQL.

¿Qué sigue?