Fundamentos de SQL para Salesforce Marketing Cloud. ¿Qué es SQL?

    Publicado por Santiago Tabuenca el 26 de enero, 2021

    SQL o Structured Query Language es un lenguaje diseñado para administrar, y recuperar información de sistemas de gestión de bases de datos relacionales.​ Una de sus principales características es el manejo del álgebra y el cálculo relacional para efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como realizar cambios en ellas.  

    En el caso del uso para SQL Query de Salesforce Marketing Cloud y como mencionábamos en un artículo anterior: Cómo sacar partido a las SQL Query de Salesforce Marketing Cloud, solo usaremos SELECT para recuperar información, no actualizar o borrar registros. 

     

    Las Data Extensions de Marketing Cloud y Contact Builder usan una base de datos relacional. También lo usa en las Data Views y tus propias Data Extensions siempre y cuando establezcas y definas relaciones de este tipo. 

     

    En definitivanecesitas la mejor de las maneras para acceder a toda esa información y poder explotarla con las segmentaciones más interesantes. Y no solo para envíos, también para hacer informes personalizados o mezclados con tus propios datos. 

     

    Conceptos básicos de SQL 

     

     

    Significado de cada elemento...

     

    • SELECT:Con esto indicamos que queremos realizar una selección, hay otros tipos en SQL, pero en SQL QUERY de Marketing Cloud solo se pueden usar SELECT.
    • DISTINCT: Indica que queremos seleccionar sólo los valores distintos no repetidos. Es decir, si haces un SELECT de un ID, y este en la tabla, tiene estos valores, 1,2,2,3,4,4,5, un SELECT DISTINCT  te devolverá 1,2,3,4,5 
    • ALL: esto es que devuelva todos, como es el valor por defecto, nunca lo he visto utilizado (algún purista habrá). 

     

    Nombre de campos 

     

    Ahora toca el turno a los campos que queremos recuperar, normalmente es el listado de campos separado por coma, por ejemplo, nombre, apellido1, email o bien utilizar un asterisco * para recuperar todos los campos. 

     

    Si la consulta es en varias tablas a la vez (ya veremos cómo se hace esto), hay que especificar el nombre de la tabla antes del nombre del campo, o si hemos usado un alias para la tabla, el alias alternativamente. 

     

    AS

     

    Utilizamos AS para generar alias, tanto de una tabla como de un campo. Podemos hacer algo como SELECT CONCAT(p.nombre,’ ‘,p.apellido1) AS elNombreCompleto FROM persona AS p. 

     

    FROM:Indica la tabla desde la que queremos recuperar los datosPara el caso de recuperar datos de varias tablas, ya veremos en otro artículo cómo utilizar la cláusula JOIN 

     

    WHERE: Viene a ser como un filtro o condición de los datos que va a devolver. SELECT * FROM personas WHERE nombre=’Santiago’ nos devolverá únicamente los usuarios con los que coincida exactamente el nombre “Santiago”. 

     

    Condiciones de la cláusula where

     

    Todas las condiciones que utilizamos en where devolverá un TRUE o FALSE, en función de si el registro lo cumple o no, y mostrará solo los TRUE en la tabla resultante. 

     

    Se pueden usar operadores como: >, >=, <, <=, =, para distinto hay dos ¡= o <> y a veces, depende del motor de SQL admite ambos o solo uno de ellos. 

     

    Otra opción que tenemos es verificar si el campo es NULL, sería IS NULL, o en caso contrario IS NOT NULL, a veces hay confusión con este concepto, NULL es totalmente vacío, si introducimos en campo en ese campo un “” dejará de ser null, o simplemente si borramos el campo sin especificar que pase a ser NULL. Por eso muchas veces es mejor poner la condición WHERE campo1=’’ OR campo1 IS NULL 

     

    LIKEAntes hemos usado el = para buscar los “Santiago” pero si queremos sacar tanto los “Santiagos” como cualquier otro nombre que empiece por “Sa”, Sandra, Sara, etc. La condición sería LIKE ‘Sa%’. Es decir, en like podemos usar caracteres comodín, el porcentaje % acepta cualquier cadena de caracteres y si usamos guión bajo es un único carácter. Por ejemplo, is usamos esta búsqueda %a_a% buscará cualquier palabra como: calamar, cara, arameo, sara, etc. Es decir cualquier palabra que tenga “a” un carácter y otra “a”, tenga o no tenga luego más caracteres antes de la primera “a” o después de la última “a” 

     

    BETWEEN…. ANDpara buscar un intervalor de valores Precio BETWEEN 1 AND 50 

     

    IN(..,.., …)para no tener que hacer muchos OR, puedes incluir IN, WHERE colores IN(‘rojo’,’verde’,’azul’) 

     

    OR, AND y NOT: se pueden usar operadores lógicos como OR, NOT y AND y utilizar paréntesis para priorizar un criterio frente al otro. 

     

    GROUP BY: Especifica la agrupación que se da a los datos. Se usa siempre en combinación con funciones agregadas. 

    SELECT color, COUNT(id_zapato) FROM zapatos GROUP BY color 

     

    Nos devolverá el número de zapatos que hay por color en nuestra tabla. 

     

    HAVING: Es parecida a WHERE pero se aplica a los resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY. 

     

    ORDER BY: Se utiliza para ordenar los resultados, puedes ordenar por varios campos. Por defecto se hace por orden ascendente ASC y si no se especifica lo contrario así será. Si quieres descendente usa DESC 

     

    Funciones de agregación

     

    Cuando usamos group, solemos necesitar funciones de agregación, hay diferentes según el SQL de tu base de datos, en lo que es lo que nos ocupa de Marketing Cloud, puedes encontrar las siguientes: 

    • COUNT: devuelve el número total de filas seleccionadas por la consulta. 
    • MIN: devuelve el valor mínimo del campo que especifiquemos. 
    • MAX: devuelve el valor máximo del campo que especifiquemos. 
    • SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas. 
    • AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas. 

     

    ¿E INNER?

     

    No nos hemos olvidado de los casos en los que queremos “cruzar” varias tablas, es un tema que da para un artículo completo y lo veremos en un artículo posterior: El poder de unir tablas con SQL en SalesForce Marketing Cloud

     

    Como anticipo diremos, que dadas 2 tablas, con un campo relacionado, por ejemplo, imaginad que existe el campo NIF en ambas, algo como 

     

    SELECT * FROM tabla1 AS t1 INNER JOIN tabla2 as t2 ON t1.NIF=t2.NIF nos devolverá, todos los registros coincidentes, es decir que tengan el mismo nif en ambas tablas, y con los campos de ambas tablas. 

     

    Que viene a ser una intersección de conjuntos. 

     

    Conclusión 

    Como introducción al lenguaje SQL, hemos visto una gran parte en este artículo, especialmente lo que es la estructura básica de una instrucción SELECT de SQLmás adelante veremos ya una parte muy interesante que es el que hemos adelantado en esta última parte, el hacer consultas en varias tablas a la vez. 


    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