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:
- Puede ser más rentable, ya que usa el tiempo de ejecución avanzado de BigQuery para obtener un mejor rendimiento.
- Te permite usar funciones que no son compatibles con SQL heredado, como las instrucciones DML y DDL, las expresiones de tabla comunes (CTE), las subconsultas complejas y los predicados de unión, las vistas materializadas, los índices de búsqueda y las funciones de IA generativa.
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 |
|
| Lógica de expresión | Literales:
Operadores lógicos:
Funciones de comparación:
Instrucciones de flujo de control:
|
| Operaciones básicas | Operadores aritméticos:
Funciones de agregación básicas:
|
| Elementos de datos | Tipos de datos básicos:
Tipos de datos estructurados y parcialmente admitidos:
Funciones de conversión:
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.
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 |
|
| Funciones de agregación para estadísticas |
|
| Funciones de agregación que devuelven un campo repetido |
|
| Funciones de agregación con operaciones de bits |
|
| Funciones de agregación con concatenación |
|
| Funciones de agregación con ordenamiento |
|
| Funciones de ventana básicas |
|
| Funciones bit a bit |
|
| Expresiones condicionales |
|
| Funciones de conversión |
|
| Funciones de hora actual |
|
| Funciones del usuario actual |
|
| Funciones de fecha y hora |
|
| Función RAND |
|
| Funciones que devuelven un campo repetido |
|
| Funciones de hash |
|
| Funciones de IP |
|
| Funciones JSON |
|
| Funciones matemáticas |
|
| Funciones hiperbólicas matemáticas |
|
| Parte de las funciones TIMESTAMP |
|
| Funciones de expresión regular |
|
| Funciones de string |
|
| Funciones de URL |
|
| Funciones de marca de tiempo de UNIX |
|
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?
- Para migrar tus consultas de SQL heredado a GoogleSQL, consulta la guía de migración.