El poder de unir tablas con SQL en SalesForce Marketing Cloud

    Publicado por Santiago Tabuenca el 19 de enero, 2021

    Nada de lo que hemos comentado hasta ahora de usar SQL QUERY en vez de Data Extension filtradas tendría sentido, si no quisieras sacarle el máximo partido uniendo tablas. En Marketing Cloud puedes unir tus Data Extensions con otras a través de relaciones. Además, tienes las DataViews (información muy interesante para hacer segmentaciones) e incluso nuevas tablas que genera Einstein. 

     

    En próximos artículos veremos el tema de DataViews, porque te permiten cosas como mandar un correo a los que abrieron un email previo o mandarlo incluso a los que no lo abrieron, entre muchas otras opciones.

     

    Ahora nos vamos a centrar en hacer queries entre varias tablas, lo que llamamos JOINS. En este caso, nos basaremos en 2 tablas, pero esto se puede complicar todo lo que se quiera con más tablas e incluso con diferentes tipos de JOIN. 

     

    Para explicarlo, lo mejor es usar diagramas de Venn como hacíamos en el colegio, así lo entenderéis mejor. En este caso, vamos a ver las 7 principales JOIN’s que se usan. Hay alguna más, pero son inusuales. 

     

    Para este ejemplo, vamos a usar 2 tablas, usuario y compra. De la tabla usuario, sacaremos el nombre, de la tabla compra: categoría, fecha y cuantía. Ambas tablas están relacionadas con el campo id_usuario. 

     

    TIPO 1: Left Outer Join 

     

    En esta primera opción queremos todos los datos de la tabla usuario, y todos aquellos que tengan relación en la tabla de compras. Es decir, todos los usuarios, hayan comprado o no. 

     

    Left Outer Join 

     

    SELECT A.name, B.categoria, B.fecha, B.cuantia 

    FROM usuario A 

    LEFT JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

     

    Tabla resultado Left Outer Join 

     

    TIPO 2: Left Outer Join with Exclusions

     

    Left Outer Join with Exclusions

     

    Con esta JOIN lo que sacamos es todos los usuarios, salvo los que coinciden con compra. En decir,  estaríamos sacando todos los usuarios que NO han comprado. Útil, ¿verdad?. La SQL sería:

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    LEFT JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

    WHERE 

    B.id_usuario IS NULL 

     

    Y el resultado el de esta tabla… 

    Tabla resultado Left Outer Join with Exclusions

     

    TIPO 3: Right Outer Join 

    En esta opción queremos todos los datos de la tabla compras y todos aquellos que tengan relación en la tabla de usuarios. En teoría, esta debería coincidir en su totalidad, pero en este caso hemos forzado a que no sea así como si alguna compra no se relacionara con ningún usuario (a veces se hace para unidades dadas por perdidas, etc.):

    Right Outer Join 

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    RIGHT JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

     

    Tabla resultado Right Outer Join 

     

    TIPO 4: Right Outer Join with exclusions

    Con este tipo, sacaríamos todas las compras “huérfanas”. 

     

    Right Outer Join with exclusions

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    RIGHT JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

    WHERE 

    A.id_usuario IS NULL 

     

    Tabla resultado Right Outer Join with exclusions

     

    TIPO 5: Inner Join 

     

    Este tipo casi diríamos que es la clásica, es la pura intersección de conjuntos y saca solo los coincidentes entre ambas tablas. 

    Inner Join 

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    INNER JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

     

    Tabla resultado Inner Join

     

    TIPO 6: Full Outer Join

    Con full Outer join, como indica la palabra FULL sacaríamos todo, usuarios coincidan o no con compras, compras aunque no coincidan con usuarios y la intersección de ambos. 

     

    Full Outer Join

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    FULL OUTER JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

     

    Tabla resultado Full Outer Join

     

    TIPO 7: Outer Join

    En este último caso sacaríamos las que hemos dicho que eran las compras “huérfanas” y los usuarios que no han comprado. 

     

    Outer Join

     

    SELECT A.name, B.categoria,B.fecha,B.cuantia 

    FROM usuario A 

    FULL OUTER JOIN usuario_compra B 

    ON A.id_usuario = B.id_usuario 

    WHERE 

    A.id_usuario IS NULL 

    OR 

    B.id_usuario IS NULL 

     

    Tabla resultado Outer Join

     

    Conclusión: 

    Si quieres sacar el máximo partido a Marketing Cloud y a la estrategia de email marketing, que es finalmente el objetivo, lo esencial es saber segmentar correctamente nuestras audiencias.  Para hacer estas segmentaciones de forma correcta es importante poder combinar varias tablas. Es aquí donde entran en juego los JOIN, algo que tendrás que dominar para poder sacar el máximo partido a tus segmentaciones a través de SQL QUERY. 


    Si te ha gustado este artículo, también podrían interesarte:

    Nueva llamada a la acción

    Si te ha gustado este artículo, ¡compártelo!


    Temática: SalesForce Marketing Cloud