Revisar ejemplos de SQL
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Reconocer las funciones de una declaración SQL.
- Incluir un intervalo de tiempo en una declaración SQL de perspectivas de transmisión.
- Encontrar recursos que lo ayuden a crear SQL.
Perspectivas de transmisión en Data Cloud
La mejor manera de aprender a crear perspectivas con SQL es revisar instrucciones de ejemplo. Una vez que pueda identificar qué hace cada sección de una declaración SQL, podrá reconocer los patrones que se pueden utilizar para crear sus propias instrucciones. Antes de pasar a los ejemplos, es importante saber que hay dos tipos de perspectivas: calculadas y de transmisión. Las perspectivas calculadas se utilizan para consultar y crear cálculos complejos basados en datos almacenados, mientras que las perspectivas calculadas son consultas basadas en datos en tiempo real.
Gracias a las perspectivas de transmisión, podrá hacer lo siguiente:
- Generar analíticas de series temporales sobre datos que se mueven constantemente.
- Encontrar patrones útiles y compartir las perspectivas con otras aplicaciones mediante acciones sobre datos.
- Crear con el generador de perspectivas y SQL.
- Usar con API de Java Database Connectivity (JDBC) y herramientas de visualización, como Tableau.
Ejemplos de SQL de perspectivas calculadas
Empecemos con algunos ejemplos de perspectivas calculadas. En el primero se calculan los datos de implicación de email encontrados en Marketing Cloud y se agrupan con datos de perfil de individuo 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
Hagamos un desglose de 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
Lo que hace: calcula el conteo de emails que se abrieron según los individuos unificados, también denominados Id. de cliente.
Sección 2
FROM EmailEngagement__dlm
Lo que hace: encuentra esta información en el DMO de implicación de email.
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
Lo que hace: en este paso, conecta el DMO de implicación de email con el DMO de vínculo de la identidad del individuo. Conéctelos mediante las claves externas de la Id. de registro de origen y la Id. de individuo y los atributos del calificador de clave correspondientes, y únalos basándose en implicaciones de email que equivalgan a emails abiertos. Además, conecte estos datos con el DMO de individuo unificado basándose en la Id. y en la Id. de registro unificado.
Sección 4
GROUPBY customer_id__c
Lo que hace: agrupa esta información conforme a la Id. de cliente.
Antes de continuar, cabe destacar algo más sobre el ejemplo anterior. La manera en la que el objeto UnifiedIndividual se relaciona con un objeto de implicación (como EmailEngagement) es a través de un objeto de conexión (como el vínculo Identidad del individuo), que contiene la asignación de la Id. de individuo unificado y la Id. de individuo.
A continuación, veamos otro ejemplo de SQL con la función de clasificación. En esta instrucción se calcula el gasto del cliente que, luego, se usa para clasificar a los clientes según el gasto de todos los individuos 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
Desglosemos un poco más esta instrucció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
Lo que hace: entre todos los individuos unificados, clasifica a cada cliente conforme a su gasto total.
Sección 2
FROM ssot__SalesOrder__dlm
Lo que hace: busca esta información en el DMO de pedido de ventas.
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)
Lo que hace: une datos del DMO de pedidos de ventas con el DMO de vínculo de identidad de individuo según la Id. de cliente y la Id. de individuo, y sus respectivos atributos de calificador de clave. Une con algunos datos coincidentes en el DMO de individuo unificado según la Id. y la Id. de registro unificado.
Sección 4
GROUP BY customer_id__c
Lo que hace: agrupa esta información conforme a la Id. de cliente.
Sección 5
HAVING RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) < 1000
Lo que hace: incluye menos de 1000 clientes según su importe de gasto total.
Perspectivas de transmisión
Ahora que vimos algunos ejemplos de perspectivas calculadas, pasemos a crear SQL para perspectivas de transmisión. Crear una perspectiva de transmisión con SQL es similar a crear una perspectiva calculada, excepto por que necesitará considerar una ventana de tiempo.
Ejemplo de SQL de perspectivas de transmisión
Veamos un ejemplo en el que se muestren vistas de página dentro de un intervalo de tiempo 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 perceptible en esta declaración SQL de las perspectivas calculadas son los comandos WINDOW. Estos definen de qué manera se agrupan los resultados; en este ejemplo, en un período de 5 minutos.
WINDOW.START as start__c, WINDOW.END as end__c GROUP BY window( RealTimeMobileEvents__dlm.dateTime__c ,'5 MINUTE'),
Y este es un ejemplo de resultado de 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
|
Veamos 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
Hagamos un desglose de cada sección de esta instrucció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
Lo que hace: encuentra el total de los pedidos realizados a partir de la fuente de transmisión de eventos MobileApp entre una hora de inicio y de finalización.
Sección 2
FROM MobileApp_RT_Events__dlm
Lo que hace: usa 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
Lo que hace: agrupa los resultados en agregaciones de 5 minutos conforme a la Id. de producto e incluye información sobre: cantidad de pedidos realizados, producto, hora de inicio y finalización identificadas.
Crear sus instrucciones
Ahora que conoce los conceptos básicos y algunos ejemplos, explore las diversas opciones que tiene cuando crea sus perspectivas. Existen muchas más funciones que puede agregar a sus instrucciones SQL para mejorar aún más los 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 descubrir cómo crear perspectivas calculadas. Con eso, ya tiene las herramientas para desbloquear el poder de una consulta SQL en Data Cloud.
Recursos
- Ayuda de Salesforce: Utilizar declaraciones SQL para crear perspectivas
- Externo: GitHub de Salesforce, perspectivas calculadas de Data Cloud