É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.
- Découvrez quelques règles spécifiques sur la page Règles SQL dans les Connaissances calculées.
- Explorez notre référentiel d’exemples SQL dans un référentiel Git Hub Data Cloud.
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
- Aide Salesforce : Connaissances calculées
- Aide Salesforce : Utilisation d’instructions SQL ANSI dans Data Cloud
- Aide Salesforce : Règles SQL générales dans Connaissances calculées
- Aide Salesforce : Utilisation du pilote JDBC dans Data Cloud
- Externe : Salesforce GitHub, Connaissances calculées Data Cloud