Skip to content

🐞 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 SELECT no 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 fullVisitorId y hits_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áusula WHERE.
  • Las agregaciones deben filtrarse con HAVING, no con WHERE.

✅ 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_citytotal_products_ordereddistinct_visitorsavg_products_ordered
New York150530
Los Angeles110427.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() o SUM().

✅ 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_productshits_product_v2ProductCategory
132Electronics
97Office
84Clothing
78Accessories
60Shoes

🧹 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.