Skip to main content

Étude d’exemples SQL

Objectifs d’apprentissage

Après avoir terminé cette unité, vous pourrez :

  • Reconnaître les fonctions d’une instruction SQL
  • Inclure une période dans une instruction SQL de connaissance en continu
  • Trouver des ressources pour vous aider à créer des requêtes SQL

Connaissances en continu dans Data Cloud

La meilleure façon d’apprendre à générer des connaissances avec le langage SQL est de consulter des exemples d’instructions. Une fois que vous pouvez identifier le rôle de chaque section d’une instruction SQL, vous pouvez reconnaître des modèles à utiliser pour créer vos propres instructions. Avant de passer en revue les exemples, il est important de savoir qu’il existe deux types de connaissances : calculées et en continu. Les informations calculées sont utilisées pour interroger et créer des calculs complexes fondés sur des données stockées, tandis que les connaissances en continu sont des requêtes fondées sur des données en temps réel.

De plus, grâce aux connaissances en continu, vous pouvez :

  • générer des analyses de séries temporelles sur des données déplacées en continu ;
  • trouver des modèles utiles et partager les connaissances avec d’autres applications à l’aide des actions sur les données ;
  • créer des connaissances à l’aide du générateur correspondant et du langage SQL ;
  • les utiliser avec l’API JDBC (Java Database Connectivity) et des outils de visualisation tels que Tableau.

Exemples SQL de connaissances calculées

Commençons par quelques exemples de connaissances calculées. Ce premier calcule les données d’engagement par e-mail trouvées dans Marketing Cloud et les regroupe avec des données de profil d’individus unifiés.

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

Décomposons chaque section de cette instruction SQL.

Section 1

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

Fonction : calcule le nombre d’e-mails ouverts selon les individus unifiés, également appelé ID de client.

Section 2

FROM
EmailEngagement__dlm

Fonction : recherche ces informations dans l’objet modèle de données d’engagement par e-mail.

Section 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

Fonction : dans cette étape, connecte l’objet modèle de données d’engagement par e-mail à l’objet modèle de données Lien d’identité d’individu. Les connecte à l’aide des clés étrangères de l’ID d’enregistrement source et de l’ID d’individu ainsi que des attributs de qualificateur de clé respectifs, et les joint en fonction d’un engagement par e-mail équivalent à l’ouverture d’un e-mail. Connecte également ces données à l’objet modèle de données Unified Individual (Individu unifié) en fonction de l’ID et de l’ID d’enregistrement unifié.

Section 4

GROUPBY
customer_id__c

Fonction : regroupe ces informations en fonction de l’ID de client.

Avant de continuer, il y a encore une chose à noter à propos de l’exemple précédent. L’objet UnifiedIndividual est associé à un objet d’engagement (tel qu’EmailEngagement) à l’aide d’un objet servant de pont (tel qu’un lien d’identité d’individu), qui contient le mappage de l’ID d’individu unifié et de l’ID d’individu.

Examinons ensuite un autre exemple SQL utilisant une fonction de classement. Cette instruction calcule les dépenses des clients, puis les utilise pour classer les clients en fonction des dépenses de tous les individus unifiés.

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

Décomposons davantage cette instruction.

Section 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

Fonction : parmi tous les individus unifiés, classe chaque client en fonction de ses dépenses totales.

Section 2

FROM
ssot__SalesOrder__dlm

Fonction : recherche ces informations dans l’objet modèle de données Commande client.

Section 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)

Fonction : joint les données de l’objet modèle de données commande client à l’objet modèle de données Lien d’identité d’individu sur l’ID de client et l’ID d’individu, ainsi que leurs attributs de qualificateur clé respectifs. Joint certaines données correspondantes dans l’objet modèle de données Unified Individual (Individu unifié) en fonction de l’ID et de l’ID d’enregistrement unifié.

Section 4

GROUP BY customer_id__c

Fonction : regroupe ces informations en fonction de l’ID de client.

Section 5

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

Fonction : inclut moins de 1 000 clients en fonction du montant total de leurs dépenses.

Connaissances en continu

Maintenant que nous avons examiné quelques exemples de connaissances calculées, passons à la création de requêtes SQL pour les connaissances en continu. La création d’une connaissance en continu avec le langage SQL est semblable à la création d’une connaissance calculée, sauf que vous devez prendre en compte une période donnée.

Exemple SQL de connaissances en continu

Étudions un exemple qui montre les vues de pages dans un laps de temps de 5 minutes.

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 différence notable entre cette instruction SQL et les connaissances calculées réside dans les commandes WINDOW. Celles-ci définissent la manière dont vos résultats sont regroupés (pour cet exemple, dans un délai de 5 minutes).

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

Voici un exemple de résultat de cette expression.

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

Voyons un autre exemple.

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

Décomposons chaque section de cette instruction.

Section 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

Fonction : recherche la somme des commandes passées en fonction de la source en continu d’événements MobileApp entre une heure de début et une heure de fin.

Section 2


FROM
MobileApp_RT_Events__dlm

Fonction : utilise la source en continu d’événements MobileApp.

Section 3

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

Fonction : regroupe les résultats en agrégations de 5 minutes selon l’ID du produit et inclut des informations sur la quantité commandée, le produit, et les heures de début et de fin identifiées.

Création de vos instructions

Maintenant que vous disposez des concepts de base et de quelques exemples, explorez les différentes options qui s’offrent à vous pour générer vos connaissances. Il existe de nombreuses autres fonctions que vous pouvez ajouter à vos instructions SQL pour approfondir vos résultats.

Enfin, vous pouvez consulter la page d’aide Connaissances Data Cloud afin d’apprendre à créer des connaissances calculées. Vous êtes maintenant prêt à exploiter la puissance d’une requête SQL dans Data Cloud.

Ressources

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires