Revisar ejemplos de SQL
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Reconocer las funciones de una declaración SQL.
- Incluir el periodo de tiempo en una declaración de SQL de perspectivas de transmisión.
- Encontrar recursos para ayudarle a crear lenguaje SQL.
Perspectivas de transmisión en Data Cloud
La mejor manera para aprender a crear perspectivas con SQL es revisar declaraciones de ejemplo. Una vez que sepa identificar qué hace cada sección de una declaración SQL, podrá reconocer los patrones que pueden utilizarse para crear sus propias declaraciones. Antes de revisar los ejemplos, es importante saber que hay dos tipos de perspectivas: calculadas y de transmisión. Las perspectivas calculadas se utilizan para consultar y realizar cálculos complejos según los datos almacenados; las perspectivas de transmisión son consultas que se basan en datos en tiempo real.
Con las perspectivas de transmisión puede hacer lo siguiente:
- Generar análisis de series temporales sobre datos que están en constante movimiento.
- Encontrar patrones útiles y compartir las perspectivas con otras aplicaciones mediante acciones de datos.
- Crear con el generador de perspectivas y SQL.
- Utilizarlas con la API Java Database Connectivity (JDBC) y herramientas de visualización, como Tableau.
Ejemplos de SQL de perspectivas calculadas
Vamos a empezar con algunos ejemplos de perspectivas calculadas. La primera calcula los datos de implicación del correo electrónico encontrados en Marketing Cloud y los agrupa con los datos del perfil individual unificado.
SELECT COUNT( EmailEngagement__dlm.Id__c) as email_open_count__c, UnifiedIndividual__dlm.Id__c as customer_id__c FROM EmailEngagement__dlm JOIN IndividualIdentityLink__dlm ON IndividualIdentityLink__dlm.SourceRecordId__c = EmailEngagement__dlm.IndividualId__c and IFNULL(IndividualIdentityLink__dlm.KQ_SourceRecordId__c, ‘’) = IFNULL(EmailEngagement__dlm.KQ_IndividualId__c, ‘’) and EmailEngagement__dlm.EngagementChannelActionId__c ='Open' JOIN UnifiedIndividual__dlm ON UnifiedIndividual__dlm.Id__c = IndividualIdentityLink__dlm.UnifiedRecordId__c GROUPBY customer_id__c
Vamos a desglosar cada sección de esta declaración SQL.
Sección 1
SELECT COUNT( EmailEngagement__dlm.Id__c) as email_open_count__c, UnifiedIndividual__dlm.Id__c as customer_id__c
Qué hace: Calcula la cantidad de correos electrónicos abiertos según los perfiles individuales unificados, también llamados Id. del cliente.
Sección 2
FROM EmailEngagement__dlm
Qué hace: Localiza la información en el DMO de implicación del correo electrónico.
Sección 3
JOIN IndividualIdentityLink__dlm ON IndividualIdentityLink__dlm.SourceRecordId__c = EmailEngagement__dlm.IndividualId__c and IFNULL(IndividualIdentityLink__dlm.KQ_SourceRecordId__c, ‘’) = IFNULL(EmailEngagement__dlm.KQ_IndividualId__c, ‘’) and EmailEngagement__dlm.EngagementChannelActionId__c ='Open' JOIN UnifiedIndividual__dlm ON UnifiedIndividual__dlm. Id__c = IndividualIdentityLink__dlm.UnifiedRecordId__c
Qué hace: En este paso, conecta el DMO de implicación del correo electrónico con el DMO de vínculo de identidad individual. Se conectan utilizando claves externas del Id. de registro individual y del Id. de perfil individual y los respectivos atributos calificadores clave, y se realizan uniones según la implicación en el correo electrónico, es decir, las veces que se abrió el correo. También se conectan los datos con el DMO de perfil individual unificado basados en el Id. y en el Id. de registro unificado.
Sección 4
GROUPBY customer_id__c
Qué hace: agrupa esta información basándose en el Id. de cliente.
Antes de continuar, hay algo más que debe observar en el ejemplo anterior. La manera en la que el objeto UnifiedIndividual está relacionado a un objeto de implicación (como EmailEngagement) es mediante un objeto de conexión (como el vínculo de identidad individual), que contiene la asignación del Id. individual unificado y el Id. individual.
A continuación, vamos a ver otro ejemplo de SQL que utiliza una función de clasificación. Esta declaración calcula los gastos del cliente y utiliza esa información para clasificar a los clientes según sus gastos en todos los perfiles individuales unificados.
SELECT UnifiedIndividual__dlm.ssot__Id__c AS customer_id__c, RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) AS customer_rank_based_on_spend__c, SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) AS customer_spend__c FROM ssot__SalesOrder__dlm JOIN IndividualIdentityLink__dlm ON (ssot__SalesOrder__dlm.ssot__SoldToCustomerId__c = IndividualIdentityLink__dlm.SourceRecordId__c) AND IFNULL(ssot__SalesOrder__dlm.KQ_SoldToCustomerId__c, ‘’) = IFNULL(IndividualIdentityLink__dlm.KQ_SourceRecordId__c, ‘’) LEFT OUTER JOIN UnifiedIndividual__dlm ON (IndividualIdentityLink__dlm.UnifiedRecordId__c = UnifiedIndividual__dlm.ssot__Id__c) GROUP BY customer_id__c HAVING RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) < 1000
Vamos a desglosar esta declaración.
Sección 1
SELECT UnifiedIndividual__dlm.ssot__Id__c AS customer_id__c, RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) AS customer_rank_based_on_spend__c, SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) AS customer_spend__c
Qué hace: en todos los perfiles individuales unificados, clasifique a cada cliente según el gasto total.
Sección 2
FROM ssot__SalesOrder__dlm
Qué hace: busca esta información en el DMO de pedido de venta.
Sección 3
JOIN IndividualIdentityLink__dlm ON (ssot__SalesOrder__dlm.ssot__SoldToCustomerId__c = IndividualIdentityLink__dlm.SourceRecordId__c) AND IFNULL(ssot__SalesOrder__dlm.KQ_SoldToCustomerId__c, ‘’) = IFNULL(IndividualIdentityLink__dlm.KQ_SourceRecordId__c, ‘’) LEFT OUTER JOIN UnifiedIndividual__dlm ON (IndividualIdentityLink__dlm.UnifiedRecordId__c = UnifiedIndividual__dlm.ssot__Id__c)
Qué hace: une datos del DMO del pedido de venta y del DMO de vínculo de identidad individual del Id. de cliente y del Id. individual y sus respectivos atributos de calificador clave. Realiza la unión con datos coincidentes en el DMO de perfil individual unificado según el Id. de registro unificado y el Id.
Sección 4
GROUP BY customer_id__c
Qué hace: agrupa esta información basándose en el Id. de cliente.
Sección 5
HAVING RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) < 1000
Qué hace: incluye menos de 1000 clientes según el total gastado.
Perspectivas de transmisión
Ahora que ya hemos revisado algunos ejemplos de perspectivas calculadas, vamos a empezar a crear lenguaje SQL para perspectivas de transmisión. La creación de perspectivas de transmisión con SQL es parecida a la creación de perspectivas calculadas, salvo que necesita tener en cuenta un periodo de tiempo.
Ejemplo de SQL de perspectivas de transmisión
Vamos a ver un ejemplo que muestra las visualizaciones de una página en un periodo de 5 minutos.
SELECT COUNT( RealTimeMobileEvents__dlm.pageviews__c ) as page_views__c, ssot__Individual__dlm.ssot__Id__c as customer_id__c, ssot__Individual__dlm.KQ_Id__c as kq_customer_id__c, RealTimeMobileEvents__dlm.product__c as product__c, WINDOW.START as start__c, WINDOW.END as end__c FROM RealTimeMobileEvents__dlm JOIN ssot__Individual__dlm ON ssot__Individual__dlm.ssot__Id__c = RealTimeMobileEvents__dlm.deviceId__c AND IFNULL(ssot__Individual__dlm.KQ_Id__c, ‘’) = IFNULL(RealTimeMobileEvents__dlm.KQ_deviceId__c, ‘’) GROUP BY window( RealTimeMobileEvents__dlm.dateTime__c ,'5 MINUTE'), Customer_id__c, kq_customer_id__c
La diferencia más notable en la declaración SQL en cuanto a las perspectivas calculadas es el comando WINDOW. Este define la manera en que se agrupan sus resultados (en este ejemplo, en 5 minutos).
WINDOW.START as start__c, WINDOW.END as end__c GROUP BY window( RealTimeMobileEvents__dlm.dateTime__c ,'5 MINUTE'),
Hay un resultado de ejemplo en esta expresión.
START_C
| END_C
| CUSTOMER_ID_C
| PRODUCT_C
| PAGE_VIEWS_C
|
---|---|---|---|---|
12
| 12,05 | 1 | HK0012
| 1
|
12,05
| 12,1 | 2 | JK0078
| 2
|
12,1
| 12,15 | 3 | HK0078
| 1
|
Vamos a ver otro ejemplo.
SELECT SUM( MobileApp_RT_Events__dlm.productPurchaseWeb_orderQuanity__c ) as order_placed__c, MobileApp_RT_Events__dlm.AddToCartWeb_productId__c as product__c, WINDOW.START as start__c, WINDOW.ENDas end__c FROM MobileApp_RT_Events__dlm GROUPBY window( MobileApp_RT_Events__dlm.dateTime__c, '5 MINUTE' ), MobileApp_RT_Events__dlm.AddToCartWeb_productId__c
Vamos a desglosar cada sección de esta declaración.
Sección 1
SELECT SUM( MobileApp_RT_Events__dlm.productPurchaseWeb_orderQuanity__c ) as order_placed__c, MobileApp_RT_Events__dlm.AddToCartWeb_productId__c as product__c, WINDOW.START as start__c, WINDOW.END as end__c
Qué hace: encuentra el total de los pedidos realizados según la fuente de transmisión de eventos MobileApp entre una hora de inicio y de fin.
Sección 2
FROM MobileApp_RT_Events__dlm
Qué hace: utiliza la fuente de transmisión de eventos MobileApp.
Sección 3
GROUPBY window( MobileApp_RT_Events__dlm.dateTime__c, '5 MINUTE' ), MobileApp_RT_Events__dlm.AddToCartWeb_productId__c
Qué hace: agrupa los resultados en agregaciones de 5 minutos según el Id. de producto e incluye información sobre lo siguiente: cantidad de pedidos realizados, producto, hora de inicio y de fin identificadas.
Crear sus declaraciones
Ahora que ya conoce los conceptos básicos y algunos ejemplos, explore varias opciones de las que dispone a la hora de crear sus perspectivas. Existen muchas más funciones que puede agregar a sus declaraciones SQL para ajustar más sus resultados.
- Consulte algunas reglas de SQL para perspectivas específicas.
- Explore nuestro repositorio de ejemplos de SQL en un repositorio de GitHub de Data Cloud.
Por último, puede visitar Perspectivas calculadas para obtener más información sobre la creación de perspectivas calculadas. Con todo esto, ya está listo para desbloquear el poder de una consulta SQL en Data Cloud.
Recursos
- Ayuda de Salesforce: Utilizar declaraciones SQL para crear perspectivas
- Sitio externo: Salesforce GitHub, Data Cloud Calculated Insights