Skip to main content

Analisar exemplos de SQL

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Reconhecer as funções de uma instrução SQL.
  • Incluir um período de tempo em uma instrução SQL de insights de streaming.
  • Encontrar recursos para ajudar a criar o SQL.

Insights de streaming no Data Cloud

A melhor forma de aprender como criar insights com o SQL é analisando instruções de exemplo. Quando você conseguir identificar o que cada seção de uma instrução SQL faz, poderá reconhecer padrões que podem ser usados para criar suas próprias instruções. Antes de vermos os exemplos, é importante saber que há dois tipos de insights: Calculados e de streaming. Os insights calculados são usados para consultar e criar cálculos complexos baseados em dados armazenados, e os insights de streaming são consultas baseadas em dados em tempo real.

E, com os insights de streaming, você pode:

  • Gerar análises de séries temporais em movimentações de dados contínuas.
  • Encontrar padrões úteis e compartilhar os insights com outros aplicativos via Ações de dados.
  • Criar usando o Criador de insights e o SQL.
  • Usar com a API Java Database Connectivity (JDBC) e ferramentas de visualização como o Tableau.

Exemplos de SQL de insights calculados

Vamos começar com alguns exemplos de insights calculados. Ele calcula dados de engajamento por email encontrados no Marketing Cloud e agrupa esses dados com dados de perfis individuais unificados.

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 analisar cada seção dessa instrução SQL.

Seção 1

SELECT COUNT( EmailEngagement__dlm.Id__c) as email_open_count__c,
UnifiedIndividual__dlm.Id__c as customer_id__c

O que faz:

Seção 2

FROM
EmailEngagement__dlm

O que faz: Localiza essas informações no DMO de engajamento por email.

Seção 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

O que faz: Nesta etapa, conecte o DMO de engajamento por email com o DMO de link de identidade individual. Conecte-os usando as chaves estrangeiras da ID do registro de origem e da ID individual e os respectivos atributos do qualificador de chave, e faça a junção baseando-se no engajamento por email que equivale a um email aberto. Também conecte esses dados ao DMO individual unificado com base na ID e na ID do registro unificado.

Seção 4

GROUPBY
customer_id__c

O que faz: Agrupa essas informações com base na ID do cliente.

Antes de continuarmos, há mais uma coisa que é importante observar sobre o exemplo anterior. A forma como o objeto UnifiedIndividual está relacionado a um objeto de engajamento (como EmailEngagement) se dá por meio de um objeto de ponte (como o link de identidade individual), que contém o mapeamento da ID individual unificada e da ID individual.

Em seguida, vamos ver outro exemplo de SQL usando uma função de classificação. Essa instrução calcula os gastos do cliente e usa essa informação para classificar os clientes com base nos gastos de todos os Indivíduos 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 detalhar melhor essa instrução.

Seção 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

O que faz: Em todos os indivíduos unificados, classifica cada cliente de acordo com o total de gastos.

Seção 2

FROM
ssot__SalesOrder__dlm

O que faz: Procura essa informação no DMO de pedido de vendas.

Seção 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)

O que faz: Faz a junção dos dados do DMO de pedido de vendas com o DMO de link de identidade individual com base na ID do cliente e ID individual, e seus respectivos atributos de qualificadores de chave. Faz a junção com alguns dados correspondentes no DMO individual unificado baseado na ID e ID do registro unificado.

Seção 4

GROUP BY customer_id__c

O que faz: Agrupa essas informações com base na ID do cliente.

Seção 5

HAVING RANK() OVER (ORDER BY SUM(ssot__SalesOrder__dlm.ssot__GrandTotalAmount__c) ) < 1000

O que faz: Inclui menos de 1000 clientes conforme o valor total de gastos.

Insights de streaming

Depois de analisarmos alguns exemplos de insights calculados, vamos mudar o foco para a criação de um SQL para insights de streaming. A criação de um insight de streaming com SQL é semelhante à criação de um insight calculado, porém é necessário considerar uma janela de tempo.

Exemplo de SQL de insights de streaming

Vamos ver um exemplo que mostra exibições de página em um período 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

A diferença notável nessa instrução SQL em relação aos insights calculados são os comandos WINDOW. Eles definem como os resultados são agrupados; nesse exemplo, em um período de 5 minutos.

WINDOW.START as start__c,
WINDOW.END as end__c
GROUP BY
window( RealTimeMobileEvents__dlm.dateTime__c ,'5 MINUTE'),

Veja um exemplo de resultado dessa expressão.

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 ver outro exemplo.

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 analisar cada seção dessa instrução.

Seção 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

O que faz: Encontra a soma dos pedidos feitos com base na fonte de streaming de eventos do MobileApp entre uma hora de início e uma hora de término.

Seção 2


FROM
MobileApp_RT_Events__dlm

O que faz: Usa a fonte de streaming de eventos do MobileApp.

Seção 3

GROUPBY
window(
MobileApp_RT_Events__dlm.dateTime__c,
'5 MINUTE'
),
MobileApp_RT_Events__dlm.AddToCartWeb_productId__c

O que faz: Agrupa os resultados em agregações de 5 minutos segundo a ID do produto e inclui informações sobre: quantidade de pedidos feitos, produto, hora de início e de término identificados.

Criar suas declarações

Agora que você já conhece os conceitos básicos e alguns exemplos, explore as várias opções disponíveis para criar insights. Existem muitas outras funções que podem ser adicionadas às instruções SQL para aumentar ainda mais os resultados.

Para finalizar, visite Insights calculados para saber como criar insights calculados. Com tudo isso, você estará pronto para aproveitar ao máximo o poder de uma consulta SQL no Data Cloud.

Recursos

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback