BigQuery es el almacén de datos de Google totalmente gestionado y sin servidor que permite a las empresas almacenar y manejar grandes cantidades de datos sin tener que invertir en infraestructura. Para recuperar datos de BigQuery, pueden utilizar la sintaxis SQL para ejecutar consultas.
En este artículo encontrará una guía sencilla sobre la sintaxis SQL de BigQuery y aprenderá a escribir sus primeras consultas SQL.
Sintaxis SQL de BigQuery
La sintaxis SQL hace referencia a las reglas del lenguaje que hay que seguir al escribir consultas SQL. Cada vez que escriba una sentencia, utilizará palabras clave como SELECT, FROM, WHERE y ORDER BY.
Nota: Para mejorar la legibilidad, seguiremos algunas prácticas recomendadas para escribir consultas SQL.
1) Utilizaremos mayúsculas para distinguir entre palabras clave y tablas o columnas. Por lo tanto, pondremos en mayúsculas las palabras clave, pero utilizaremos minúsculas para todas las tablas y columnas.
2) Aunque podemos escribir varias sentencias en la misma línea, separaremos las sentencias utilizando nuevas líneas.
Si desea iniciarse en BigQuery, a continuación encontrará una guía rápida de sintaxis SQL.
SELECCIONE
Utilizaremos la sentencia SELECT para seleccionar las columnas que devolverá la consulta.
Sintaxis SELECT
SELECT columna1, columna2, ...
FROM nombre_tabla;
En este ejemplo, le mostraremos cómo utilizar consultas SQL para recuperar datos de un conjunto de datos de baloncesto de la NCAA.
En primer lugar, ejecutaremos una consulta SQL para seleccionar tres columnas (school_ncaa, name y alias) de este conjunto de datos.
Después de la sentencia SELECT, añada todas las columnas que desee seleccionar, separadas por comas. La cláusula FROM especifica la tabla que estamos consultando para recuperar los datos.
SELECT escuela_ncaa, nombre, alias
FROM `bigquery-public-data.ncaa_basketball.mbb_teams` ;
Esta consulta ha devuelto filas con las siguientes columnas:
- school_ncaa - Esta columna contiene el nombre de la escuela asociada a cada equipo.
- nombre - Esta columna contiene el nombre del equipo para cada fila.
- alias - Esta columna contiene alias comunes o nombres abreviados utilizados para algunos equipos.
Como puede ver, ha devuelto todos los datos que he solicitado divididos en columnas.
En este ejemplo, he pedido a BigQuery que devuelva los datos de estas tres columnas. Si desea seleccionar todas las columnas del conjunto de datos, utilice un asterisco (*) en su lugar.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mbb_teams` ;
DONDE
Utilizaremos la cláusula WHERE para filtrar los datos del conjunto de datos.
Sintaxis WHERE
SELECT columna1, columna2, ...
FROM nombre_tabla
DONDE condición;
Digamos que quiero recuperar datos de todas las columnas pero sólo de las filas en las que la columna nombre sea igual a ‘Carmesí’.
Así que vamos a desglosar la fórmula:
SELECT * - Especifica que queremos que se devuelvan todas las columnas. El * selecciona todas las columnas.
FROM bigquery-public-data.ncaa_basketball.mbb_teams - Esto especifica la tabla que estamos consultando, la tabla mbb_teams.
WHERE name = ‘Crimson’ - Esta cláusula WHERE filtra las filas a sólo aquellas en las que el valor de la columna name es igual a ‘Crimson’.
SELECCIONAR *
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Crimson’;
Esta consulta SQL de BigQuery ha devuelto todas las columnas de las filas de la tabla mbb_teams donde la columna name es igual a ‘Crimson’.
Ahora utilizaré la condición OR porque quiero que BigQuery recupere las filas que coincidan con los nombres de los equipos ‘Crimson’ o ‘Tigers’. Añadiré una condición OR a la cláusula WHERE.
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Crimson’ OR name = ‘Tigers’;
Ahora BigQuery ha devuelto los datos de las filas cuyo nombre es ‘Crimson’ o ‘Tigers’.
Si quiero devolver varios valores con una cláusula WHERE, puedo añadir una condición IN a la fórmula. Cuando añado IN a la sentencia WHERE, BigQuery devolverá todos los valores entre paréntesis.
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name IN (‘Crimson’,’Tigers’,’Gators’);
Si desea añadir varios filtros o varios criterios para que se cumplan en los resultados de la consulta, debe utilizar la condición Y. La condición AND devolverá valores sólo cuando se cumplan ambas condiciones.
En este ejemplo, quiero que BigQuery devuelva valores sólo para estos equipos: Tigres de Auburn o Tigres de Clemson. Por lo tanto, deben cumplirse ambos criterios. El nombre debe ser “Tigers” y la escuela debe ser Auburn o Clemson. Ésta es la fórmula que utilizaré:
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE name = ‘Tigers’ AND school_ncaa = ‘Auburn’ OR school_ncaa = ‘Clemson’;
Ahora digamos que quiero que BigQuery filtre las filas en las que el nombre empieza por ‘A’. A diferencia de los ejemplos anteriores, en los que utilicé la sentencia WHERE para devolver valores exactos, aquí utilizaré el operador LIKE para la coincidencia parcial de cadenas. Así es como puedo usar el comando LIKE:
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE nombre LIKE ‘A%’;
Estos son algunos ejemplos de cómo puede utilizar el comando LIKE para filtrar datos basándose en criterios específicos.
|
COMO |
Resultado |
|
LIKE ‘a%’ |
Devuelve los valores que empiezan por “a” |
|
LIKE ‘%a’ |
Devuelve los valores que terminan en “a” |
|
LIKE ‘%ty%’ |
Devuelve los valores que tienen “ty” en cualquier posición |
|
LIKE ‘_s%’ |
Devuelve los valores que tienen “s” en la segunda posición |
|
LIKE ‘a%s’ |
Devuelve los valores que empiezan por “a” y acaban por “s”.” |
Si quiero que BigQuery filtre las filas en las que el nombre empieza por ‘A’, pero excluya los nombres que empiezan por ‘Ag’, puedo añadir un comando NOT LIKE.
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE nombre LIKE ‘A%’ AND nombre NO LIKE ‘Ag%’;
ORDENAR POR
La sentencia ORDER BY se utiliza para ordenar los valores de una columna específica en orden ascendente o descendente.
ORDENAR POR sintaxis
SELECT columna1, columna2, ...
FROM nombre_tabla
ORDER BY columna1, columna2, ... ASC|DESC;
Escribiré una consulta para recuperar datos filtrados por un nombre de equipo específico y ordenaré los resultados por escuela en orden ascendente. Cuando ordeno los resultados en orden ascendente, la condición ASC es opcional.
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE nombre = ‘Tigres’
ORDER BY escuela_ncaa;
Como puede ver, BigQuery ha ordenado los nombres de los colegios alfabéticamente. Si añado la condición DESC, ordenará los nombres de los colegios en orden descendente.
SELECT alias, escuela_ncaa, nombre, mercado
FROM `bigquery-public-data.ncaa_basketball.mbb_teams`
WHERE nombre = ‘Tigres’
ORDER BY escuela_ncaa DESC;
Cómo conectar BigQuery a Google Sheets
Ahí lo tienes. Así es como puedes escribir tus primeras consultas usando SQL en BigQuery. Si eres usuario de hojas de cálculo, echa un vistazo a este artículo sobre Obtener datos de BigQuery a Google Sheets automáticamente.
