Cómo realizar cruces de tablas con JOIN en BigQuery

En mi experiencia con clientes, he visto que el modelado de datos marca la diferencia entre un reporte mediocre y una estrategia ganadora. La capacidad de unir fuentes distintas es lo que realmente te permite sacar información valiosa. En BigQuery, el uso de JOINs es la herramienta definitiva para combinar tablas y obtener esa visión completa que no tienes cuando los datos están aislados.

Dominando los tipos de JOIN

Lo primero que debes entender es que cada JOIN tiene un propósito según lo que necesites conservar. En mi día a día, trabajo con estas variantes:

  • INNER JOIN: Solo mantiene las filas donde hay coincidencia en ambas tablas. Si el dato no existe en una de las dos, desaparece.
  • LEFT JOIN: Es el que mejor me ha funcionado la mayoría de veces. Mantiene todos los datos de la tabla de la izquierda y trae lo que coincide de la derecha. Si no hay coincidencia, deja el valor como nulo.
  • FULL JOIN: Trae todo, absolutamente todo. Si no encuentra pareja, deja nulo el valor en ambos lados.

Para no volverme loco con nombres de tablas extensos, siempre uso alias. Es una regla de oro: si tengo la tabla proyecto.dataset.tabla_sesiones, la llamo s. Así, la query se vuelve legible y mucho más fácil de auditar.

Alex Amigo

¿Necesitas ayuda con tu estrategia SEO?

Trabajemos juntos para hacer crecer tu negocio con una estrategia digital personalizada.

Uniones complejas y limpieza de datos

A veces no basta con unir por un solo campo. He tenido casos donde necesito cruzar por fecha y por canal simultáneamente. La sintaxis es directa: utilizo ON tabla1.campo = tabla2.campo AND tabla1.canal = tabla2.canal. Si necesitas más condiciones, simplemente añades más AND.

Ahora, el problema real aparece con los valores vacíos. Al hacer un LEFT JOIN, es normal encontrarse con nulos donde esperabas un número. Para esto, uso siempre IFNULL. Por ejemplo, IFNULL(ventas, 0) me permite transformar ese vacío en un cero técnico que no rompe mis cálculos ni mis dashboards. Si no haces esto, cualquier operación matemática posterior te devolverá un nulo, arruinando tu reporte.

He visto a muchos analistas frustrarse porque sus totales no cuadran tras un cruce. Mi consejo: antes de unir, verifica que las tablas tengan una clave común única. Si la tabla de la derecha tiene duplicados, tu tabla resultante se multiplicará innecesariamente. Limpiar antes de cruzar es la clave para que el motor de BigQuery trabaje rápido y sin errores.

Preguntas frecuentes

¿Qué tipo de JOIN debo usar si quiero conservar todos mis datos originales?

Debes usar un LEFT JOIN, ya que prioriza la tabla de la izquierda y mantiene todos sus registros aunque no tengan coincidencia en la otra tabla.

¿Por qué mis resultados muestran valores NULL tras un cruce?

Esto ocurre porque el JOIN no encontró una coincidencia para esos registros en la segunda tabla. Puedes solucionarlo envolviendo el campo en la función IFNULL.

¿Cómo puedo unir tablas por más de una condición?

Puedes encadenar tantas condiciones como necesites en la cláusula ON utilizando el operador AND para que el motor de búsqueda verifique todas las coincidencias.