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 a página de ajuda de insights do Data Cloud 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