Appearance
🐞 Errores comunes en BigQuery y cómo solucionarlos
En esta guía se presentan errores típicos que puedes encontrar al escribir consultas en BigQuery. Cada sección incluye:
- Descripción del problema
- Consulta con el error
- Explicación del error
- Consulta corregida
- Resultado esperado (si aplica)
📌 1. Errores de sintaxis
❌ Error 1: SELECT sin columnas
sql
#standardSQL
SELECT FROM `data-to-inghts.ecommerce.rev_transactions` LIMIT 1000
🧠 ¿Qué está mal?
- Hay un error de tipeo en el nombre del dataset:
"inghts"en lugar de"insights". - No se ha definido ninguna columna en el
SELECT.
✅ Consulta corregida
sql
#standardSQL
SELECT * FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 1000
❌ Error 2: Uso de SQL antiguo (legacy)
sql
#standardSQL
SELECT * FROM [data-to-insights:ecommerce.rev_transactions] LIMIT 1000
🧠 ¿Qué está mal?
- Está usando corchetes
[...], que son propios de legacy SQL. - Aunque el encabezado dice
#standardSQL, la sintaxis no es compatible.
✅ Consulta corregida
sql
#standardSQL
SELECT * FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 1000
❌ Error 3: Falta de columnas en SELECT
sql
#standardSQL
SELECT FROM `data-to-insights.ecommerce.rev_transactions`
🧠 ¿Qué está mal?
- El
SELECTno tiene ninguna columna especificada. - Aunque se puede usar
SELECT *, dejarlo vacío es un error de sintaxis.
✅ Consulta corregida
sql
#standardSQL
SELECT * FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 100
❌ Error 4: Falta de coma entre columnas
sql
#standardSQL
SELECT fullVisitorId hits_page_pageTitle
FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 1000
🧠 ¿Qué está mal?
- Falta una coma entre
fullVisitorIdyhits_page_pageTitle. - BigQuery interpreta esto como un alias:
fullVisitorId AS hits_page_pageTitle.
✅ Consulta corregida
sql
#standardSQL
SELECT
fullVisitorId,
hits_page_pageTitle
FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 1000
📊 2. Errores de agregación
❌ Error 5: COUNT sin GROUP BY
sql
#standardSQL
SELECT
COUNT(fullVisitorId) AS visitor_count,
hits_page_pageTitle
FROM `data-to-insights.ecommerce.rev_transactions`
🧠 ¿Qué está mal?
- Se está usando una función agregada (
COUNT) junto a una columna (hits_page_pageTitle) sin agrupar. - Esto lanza un error: "SELECT list expression not aggregated or grouped by"
✅ Consulta corregida
sql
#standardSQL
SELECT
COUNT(DISTINCT fullVisitorId) AS visitor_count,
hits_page_pageTitle
FROM `data-to-insights.ecommerce.rev_transactions`
GROUP BY hits_page_pageTitle
❌ Error 6: Filtro sobre alias en WHERE (en vez de HAVING)
sql
#standardSQL
SELECT
geoNetwork_city,
SUM(totals_transactions) AS total_products_ordered,
COUNT(DISTINCT fullVisitorId) AS distinct_visitors,
SUM(totals_transactions) / COUNT(DISTINCT fullVisitorId) AS avg_products_ordered
FROM `data-to-insights.ecommerce.rev_transactions`
WHERE avg_products_ordered > 20
GROUP BY geoNetwork_city
ORDER BY avg_products_ordered DESC
🧠 ¿Qué está mal?
- No se puede usar un alias (
avg_products_ordered) en la cláusulaWHERE. - Las agregaciones deben filtrarse con
HAVING, no conWHERE.
✅ Consulta corregida
sql
#standardSQL
SELECT
geoNetwork_city,
SUM(totals_transactions) AS total_products_ordered,
COUNT(DISTINCT fullVisitorId) AS distinct_visitors,
SUM(totals_transactions) / COUNT(DISTINCT fullVisitorId) AS avg_products_ordered
FROM `data-to-insights.ecommerce.rev_transactions`
GROUP BY geoNetwork_city
HAVING avg_products_ordered > 20
ORDER BY avg_products_ordered DESC
| geoNetwork_city | total_products_ordered | distinct_visitors | avg_products_ordered |
|---|---|---|---|
| New York | 150 | 5 | 30 |
| Los Angeles | 110 | 4 | 27.5 |
❌ Error 7: GROUP BY sin agregaciones útiles
sql
#standardSQL
SELECT hits_product_v2ProductName, hits_product_v2ProductCategory
FROM `data-to-insights.ecommerce.rev_transactions`
GROUP BY 1,2
🧠 ¿Qué está mal?
- Aunque la consulta es válida, no agrega ningún dato.
- Se recomienda usar funciones como
COUNT()oSUM().
✅ Consulta corregida
sql
#standardSQL
SELECT
COUNT(DISTINCT hits_product_v2ProductName) as number_of_products,
hits_product_v2ProductCategory
FROM `data-to-insights.ecommerce.rev_transactions`
WHERE hits_product_v2ProductName IS NOT NULL
GROUP BY hits_product_v2ProductCategory
ORDER BY number_of_products DESC
LIMIT 5
| number_of_products | hits_product_v2ProductCategory |
|---|---|
| 132 | Electronics |
| 97 | Office |
| 84 | Clothing |
| 78 | Accessories |
| 60 | Shoes |
🧹 3. Errores de lógica y diseño
❌ Error 8: Consulta sin contexto útil
sql
#standardSQL
SELECT fullVisitorId FROM `data-to-insights.ecommerce.rev_transactions`
🧠 ¿Qué está mal?
- Aunque esta consulta es válida, no tiene filtros, ni agrupaciones ni límites, por lo que devuelve demasiados datos sin valor analítico.
✅ Mejora sugerida
sql
#standardSQL
SELECT DISTINCT fullVisitorId FROM `data-to-insights.ecommerce.rev_transactions` LIMIT 100
✅ Esta lista irá creciendo con más errores reales a medida que avances en tu experiencia con BigQuery.