Accédez à plus de 700 ateliers et cours

Résoudre les problèmes et éviter les pièges liés à la jointure des données v1.5

Atelier 1 heure universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

BigQuery est la base de données d'analyse NoOps, économique et entièrement gérée de Google. Avec BigQuery, vous pouvez interroger plusieurs téraoctets de données sans avoir à gérer d'infrastructure ni faire appel à un administrateur de base de données. Basé sur le langage SQL et le modèle de paiement à l'usage, BigQuery vous permet de vous concentrer sur l'analyse des données pour en dégager des informations pertinentes.

La jointure des tables de données peut vous fournir des renseignements très utiles sur votre ensemble de données. Toutefois, lorsque vous joignez des données, il se peut que vous vous heurtiez à des pièges courants qui peuvent altérer vos résultats. Cet atelier a pour objectif de vous apprendre à éviter ces pièges. Voici tout d'abord les types de jointures :

  • Jointure croisée : elle combine chaque ligne du premier ensemble de données avec chaque ligne du deuxième ensemble de données, et toutes les combinaisons sont représentées dans les résultats.
  • Jointure interne : elle nécessite la présence de valeurs de clé dans les deux tables pour que les enregistrements apparaissent dans la table de résultats. Les enregistrements n'apparaissent dans la fusion que s'il existe des correspondances dans les deux tables pour les valeurs de clé.
  • Jointure gauche : chaque ligne de la table de gauche apparaît dans les résultats, que la table de droite contienne ou non des correspondances.
  • Jointure droite : l'inverse d'une jointure gauche. Chaque ligne de la table de droite apparaît dans les résultats, que la table de gauche contienne ou non des correspondances.

Pour en savoir plus, reportez-vous à la page sur les jointures.

Vous allez utiliser un ensemble de données d'e-commerce comprenant des millions d'enregistrements Google Analytics pour le Google Merchandise Store, chargé dans BigQuery. Vous disposez d'une copie de cet ensemble de données pour cet atelier, et vous allez explorer les champs et lignes qu'il contient afin d'obtenir des informations.

Pour en savoir plus sur la syntaxe permettant de suivre et de mettre à jour vos requêtes, consultez la section Syntaxe des requêtes en SQL standard.

Objectifs de l'atelier

Dans cet atelier, vous allez :

  • utiliser BigQuery pour explorer un ensemble de données ;
  • résoudre les problèmes de lignes en double dans un ensemble de données ;
  • créer des jointures entre les tables de données ;
  • comprendre chaque type de jointure.

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Ouvrir la console BigQuery

  1. Dans Google Cloud Console, sélectionnez le menu de navigation > BigQuery :
  2. Le message Welcome to BigQuery in the Cloud Console (Bienvenue sur BigQuery dans Cloud Console) s'affiche. Il contient un lien vers le guide de démarrage rapide et répertorie les mises à jour de l'interface utilisateur.

  3. Cliquez sur Done (OK).

Tâche 1 : Créer un ensemble de données pour stocker vos tables

Dans votre projet BigQuery, créez un ensemble de données intitulé ecommerce.

  1. Dans le volet de gauche de la section Explorateur, cliquez sur l'icône Afficher les actions en face de votre ID de projet, puis sélectionnez Créer un ensemble de données.

Option "Créer un ensemble de données" sélectionnée

  1. Définissez le champ ID de l'ensemble de données sur ecommerce (e-commerce). Laissez la valeur par défaut des autres options et cliquez sur Créer un ensemble de données.

Dans le volet de gauche, vous voyez une table ecommerce sous votre projet.

Tâche 2 : Épingler le projet de l'atelier dans BigQuery

Scénario : votre équipe vous fournit un nouvel ensemble de données recensant le stock de chacun de vos produits en vente sur votre site d'e-commerce. Vous souhaitez vous familiariser avec les produits du site Web et avec les champs que vous pouvez utiliser pour effectuer une jointure avec d'autres ensembles de données.

Le projet avec le nouvel ensemble de données s'intitule data-to-insights.

Par défaut, les ensembles de données publics BigQuery ne sont pas affichés dans l'UI Web de BigQuery. Étant donné que data-to-insights est un projet d'ensembles de données publics, vous devez l'épingler à votre arborescence des ressources :

  1. Dans le panneau "Explorateur", cliquez sur + AJOUTER.

  2. Sélectionnez Ajouter un projet aux favoris en saisissant son nom.

  3. Dans le champ "Nom du projet", saisissez data-to-insights.

  4. Cliquez sur Ajouter aux favoris.

  5. Dans le volet "Explorateur", le projet data-to-insights apparaîtra dans les favoris.

Projet data-to-insights épinglé au menu

Tâche 3 : Examiner les champs

Vous souhaitez vous familiariser avec les produits du site Web et les champs que vous pouvez utiliser pour créer des requêtes permettant d'analyser l'ensemble de données.

  1. Dans le volet de gauche de la section Explorateur, accédez à data-to-insights > ecommerce > all_sessions_raw.

  2. Cliquez sur l'onglet Schéma, à droite, pour afficher les champs et des informations sur chacun d'entre eux.

Tâche 4 : Identifier un champ de clé dans votre ensemble de données d'e-commerce

Examinez de plus près les produits et les champs. Vous pourrez ainsi vous familiariser avec les produits du site Web et avec les champs que vous pouvez utiliser pour effectuer une jointure avec d'autres ensembles de données.

Examiner les enregistrements

Dans cette section, vous verrez combien de noms de produits et de SKU figurent sur votre site Web, et si certains de ces champs sont uniques.

  1. Recherchez combien de noms de produits et de SKU sont présents sur le site Web. Copiez et collez la requête suivante dans l'ÉDITEUR de requête :
#standardSQL # how many products are on the website? SELECT DISTINCT productSKU, v2ProductName FROM `data-to-insights.ecommerce.all_sessions_raw`
  1. Cliquez sur EXÉCUTER.

  2. Consultez les résultats de la pagination dans l'UI Web pour afficher le nombre total d'enregistrements renvoyés, c'est-à-dire, dans notre cas, 2 273 produits et SKU.

Résultats de la requête, 1 à 50 sur 2 273

Les résultats signifient-ils pour autant qu'il existe 2 273 SKU uniques ?

  1. Copiez et collez la requête ci-dessous pour lister le nombre de SKU différents à l'aide de l'expression DISTINCT :
#standardSQL # find the count of unique SKUs SELECT DISTINCT productSKU FROM `data-to-insights.ecommerce.all_sessions_raw`
  1. Cliquez sur EXÉCUTER.

Le nombre de SKU différents les uns des autres s'élève à 1 909.

Vous avez donc 1 909 SKU distincts, ce qui est inférieur à 2 273, le nombre total de produits sur le site Web. Les premiers résultats contiennent probablement des produits ayant des SKU en double.

  1. Regardez les enregistrements de plus près. Déterminez quels produits ont plusieurs SKU et quels SKU s'appliquent à plus d'un produit.

  2. Copiez et collez la requête ci-dessous pour déterminer si certains noms de produits ont plusieurs SKU. Vous pouvez regrouper tous les SKU associés à un nom de produit à l'aide de la fonction STRING_AGG().

#standardSQL # how can we find the products with more than 1 sku? SELECT DISTINCT COUNT(DISTINCT productSKU) AS SKU_count, STRING_AGG(DISTINCT productSKU LIMIT 5) AS SKU, v2ProductName FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU IS NOT NULL GROUP BY v2ProductName HAVING SKU_count > 1 ORDER BY SKU_count DESC # product name is not unique (expected for variants)
  1. Cliquez sur EXÉCUTER.

Résultats :

Liste des résultats de la requête

Certains noms de produits ont-ils plusieurs SKU ? Vérifiez-le en examinant les résultats de la requête.

Réponse : oui

Il se peut aussi qu'un nom de produit soit associé à plusieurs SKU. Cela peut être dû aux variations. Un nom de produit (comme "T-shirt") peut être décliné en plusieurs variantes, par exemple en fonction de sa couleur ou de sa taille. Un produit peut donc raisonnablement avoir plusieurs SKU.

  1. Pour savoir si tel est le cas, copiez et collez la requête ci-dessous :
#standardSQL SELECT DISTINCT COUNT(DISTINCT v2ProductName) AS product_count, STRING_AGG(DISTINCT v2ProductName LIMIT 5) AS product_name, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE v2ProductName IS NOT NULL GROUP BY productSKU HAVING product_count > 1 ORDER BY product_count DESC # SKU is not unique (indicates data quality issues)
  1. Cliquez sur EXÉCUTER.

Liste des résultats de la requête

Question : lorsque vous examinez les résultats de la requête, voyez-vous des valeurs de SKU uniques associées à plus d'un nom de produit ? Que remarquez-vous à propos de ces noms de produits ?

Réponse : oui, il semblerait que de nombreux SKU soient associés à plus d'un nom de produit. Plusieurs noms de produits semblent être étroitement liés malgré de légères différences orthographiques (par exemple, "Water proof Gear Bag" et "Waterproof Gear Bag" [sac étanche]).

Vous verrez dans la section suivante en quoi cela peut poser problème.

Tâche 5 : Piège : clé non unique

Un SKU est conçu pour identifier un produit de façon unique et constitue la base de votre condition de jointure lorsque vous joignez d'autres tables. Une clé non unique peut provoquer de graves problèmes pour les données.

  1. Écrivez une requête pour identifier tous les noms de produits associés au SKU 'GGOEGPJC019099'.

Solution possible :

#standardSQL # multiple records for this SKU SELECT DISTINCT v2ProductName, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGPJC019099'
  1. Cliquez sur EXÉCUTER.
v2ProductName productSKU
7" Dog Frisbee GGOEGPJC019099
7" Dog Frisbee GGOEGPJC019099
Google 7-inch Dog Flying Disc Blue GGOEGPJC019099

D'après les résultats de la requête, il existe apparemment trois noms différents pour le même produit. Dans l'exemple, nous notons un caractère spécial dans l'un des noms et une formulation légèrement différente pour un autre :

Joindre des données du site Web à la liste d'inventaire de vos produits

Découvrez l'effet d'une jointure sur un ensemble de données contenant plusieurs produits associés à un même SKU. Explorez d’abord l'ensemble de données de l’inventaire de produits (la table products) pour voir si ce SKU est unique.

  1. Copiez et collez la requête ci-dessous :
#standardSQL # join in another table # products (has inventory) SELECT * FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGPJC019099'
  1. Cliquez sur EXÉCUTER.

Piège lié aux jointures : création involontaire d'une relation de SKU de type plusieurs à un

Ensuite, joignez l’ensemble de données de l’inventaire aux noms de produits et SKU de votre site Web pour y associer le stock de chaque produit en vente sur le site Web.

  1. Copiez et collez la requête ci-dessous :
#standardSQL SELECT DISTINCT website.v2ProductName, website.productSKU, inventory.stockLevel FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE productSKU = 'GGOEGPJC019099'
  1. Cliquez sur EXÉCUTER.

Que se passe-t-il lorsque vous joignez la table du site Web et la table de l'inventaire des produits au SKU ? À présent, voyez-vous le stock du produit ?

Réponse : oui, mais l'élément stockLevel est affiché trois fois (une fois pour chaque enregistrement).

Ensuite, exécutez une requête qui affiche la totalité du stock pour chaque article de l'inventaire.

  1. Copiez et collez la requête ci-dessous :
#standardSQL SELECT productSKU, SUM(stockLevel) AS total_inventory FROM ( SELECT DISTINCT website.v2ProductName, website.productSKU, inventory.stockLevel FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE productSKU = 'GGOEGPJC019099' ) GROUP BY productSKU
  1. Cliquez sur EXÉCUTER.

Tâche 6 : Solution pour éviter le piège lié aux jointures : utiliser des SKU distincts avant de procéder à la jointure

Quelles sont les options qui permettraient de résoudre votre problème de triple comptage ? Vous devez tout d'abord sélectionner uniquement des SKU distincts sur le site Web avant de joindre d'autres ensembles de données.

  • Saisissez une requête pour renvoyer le nombre d'éléments productSKU distincts de data-to-insights.ecommerce.all_sessions_raw.

Solution possible :

#standardSQL SELECT COUNT(DISTINCT website.productSKU) AS distinct_sku_count FROM `data-to-insights.ecommerce.all_sessions_raw` AS website

Réponse : 1 909 SKU distincts sont renvoyés de l'ensemble de données du site Web.

Piège posé par la jointure : perte des enregistrements de données après une jointure

Vous êtes maintenant prêt à refaire la jointure de l'ensemble de données de votre inventaire.

  1. Copiez et collez la requête ci-dessous :
#standardSQL SELECT DISTINCT website.productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU
  1. Cliquez sur EXÉCUTER.

Combien d'enregistrements ont été renvoyés ? L'ensemble des 1 909 SKU distincts ?

Réponse : non, seulement 1 090 enregistrements.

Vous avez perdu 819 SKU après avoir joint les ensembles de données. Enquêtez sur cette disparition en affinant vos champs.

  1. Copiez et collez la requête ci-dessous :
#standardSQL # pull ID fields from both tables SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU # IDs are present in both tables, how can we dig deeper?
  1. Cliquez sur EXÉCUTER.

Il semble que les SKU apparaissent dans les deux ensembles de données après la jointure.

Résolution du piège posé par la jointure : sélection du bon type de jointure et filtrage de NULL

Le type JOIN (JOINTURE) par défaut est INNER JOIN (JOINTURE INTERNE) qui renvoie des enregistrements uniquement s'il existe une correspondance dans les tables de gauche et de droite qui ont été jointes.

  1. Reprenez la requête précédente pour employer un autre type de jointure. Vous pourrez ainsi inclure tous les enregistrements de la table du site Web, qu'il y ait ou non une correspondance avec un enregistrement de SKU de l'inventaire. Types de jointure possibles : INNER JOIN (JOINTURE INTERNE), LEFT JOIN (JOINTURE GAUCHE), RIGHT JOIN (JOINTURE DROITE), FULL JOIN (JOINTURE COMPLÈTE), CROSS JOIN (JOINTURE CROISÉE).

Solution possible :

#standardSQL # the secret is in the JOIN type # pull ID fields from both tables SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website LEFT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU
  1. Cliquez sur EXÉCUTER.

À l'aide du type LEFT JOIN (JOINTURE GAUCHE), vous obtenez l'intégralité des 1 909 SKU d'origine du site Web dans vos résultats.

Combien de SKU manque-t-il dans l'inventaire de vos produits ?

  1. Saisissez une requête pour filtrer les valeurs NULL de la table de l'inventaire.

Solution possible :

#standardSQL # find product SKUs in website table but not in product inventory table SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website LEFT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE inventory.SKU IS NULL
  1. Cliquez sur EXÉCUTER.

  1. Copiez et collez la requête ci-dessous pour confirmer l’utilisation de l’un des SKU spécifiques de l'ensemble de données du site Web :
#standardSQL # you can even pick one and confirm SELECT * FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGATJ060517' # query returns zero results
  1. Cliquez sur EXÉCUTER.

Pourquoi l'ensemble de données de l'inventaire ne présenterait-il pas tous les SKU ?

Réponse : malheureusement, il n'y a pas de réponse simple. Il s'agit probablement d'une question commerciale :

  • Certains SKU peuvent être des produits numériques que vous ne stockez pas dans l'inventaire.
  • D'anciens produits que vous avez vendus dans le cadre de commandes passées sur le site Web peuvent ne plus être proposés dans l'inventaire actuel.
  • Des données peuvent être légitimement absentes de l'inventaire et doivent être suivies.

Y a-t-il des produits qui se trouvent dans l'ensemble de données de l'inventaire de produits, mais qui sont absents du site Web ?

  1. Saisissez une requête en utilisant un autre type de jointure pour en savoir plus.

Solution possible :

#standardSQL # reverse the join # find records in website but not in inventory SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website RIGHT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL
  1. Cliquez sur EXÉCUTER.

Réponse : oui. Il manque deux SKU dans l'ensemble de données du site Web.

Ensuite, ajoutez d'autres champs de l'ensemble de données de l'inventaire de produits pour afficher plus de détails.

  1. Copiez et collez la requête ci-dessous :
#standardSQL # what are these products? # add more fields in the SELECT STATEMENT SELECT DISTINCT website.productSKU AS website_SKU, inventory.* FROM `data-to-insights.ecommerce.all_sessions_raw` AS website RIGHT JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL
  1. Cliquez sur EXÉCUTER.

Pourquoi les produits ci-dessous seraient-ils absents de l'ensemble de données du site Web d'e-commerce ?

Résultats de la requête

Réponses possibles :

  • Un nouveau produit (aucune commande, rien sous sentimentScore) et un produit "in store only" (disponible en magasin uniquement).
  • Un nouveau produit avec 0 commande

Pourquoi le nouveau produit n'apparaîtrait-il pas dans l'ensemble de données de votre site Web ?

  • L'ensemble de données du site Web contient les commandes passées des clients. Les nouveaux produits qui n'ont jamais été vendus n'apparaîtront pas dans les analyses d'audience Internet tant qu'ils ne seront pas vus ou achetés.
Remarque : En règle générale, on ne fait pas de jointures RIGHT JOIN (JOINTURE DROITE) dans les requêtes de production. On fait simplement une jointure LEFT JOIN (JOINTURE GAUCHE) et on change l'ordre des tables.

Comment obtenir une requête répertoriant tous les produits manquants sur le site Web ou dans l'inventaire ?

  1. Saisissez une requête en utilisant un autre type de jointure.

Solution possible :

#standardSQL SELECT DISTINCT website.productSKU AS website_SKU, inventory.SKU AS inventory_SKU FROM `data-to-insights.ecommerce.all_sessions_raw` AS website FULL JOIN `data-to-insights.ecommerce.products` AS inventory ON website.productSKU = inventory.SKU WHERE website.productSKU IS NULL OR inventory.SKU IS NULL
  1. Cliquez sur EXÉCUTER.

Vous obtenez 819 + 2 = 821 SKU.

Le calcul LEFT JOIN + RIGHT JOIN = FULL JOIN renvoie tous les enregistrements des deux tables quelles que soient les clés de jointure correspondantes. Vous affinez ensuite les filtres lorsque vous avez des erreurs de correspondance de chaque côté.

Piège posé par la jointure : jointure croisée involontaire

Ne pas savoir quelle est la relation entre les clés de table de données (1:1, 1:N, N:N) peut générer des résultats inattendus et réduire considérablement les performances des requêtes.

Le dernier type de jointure est CROSS JOIN (JOINTURE CROISÉE).

Créez une table avec un pourcentage de remise valable sur l'ensemble du site, et que vous souhaitez appliquer à tous les produits de la catégorie "Clearance" (Liquidation).

Remplacement de la table nommée qwiklabs-***.

  1. Copiez et collez la requête ci-dessous :
#standardSQL CREATE OR REPLACE TABLE ecommerce.site_wide_promotion AS SELECT .05 AS discount;
  1. Cliquez sur EXÉCUTER.

Dans le volet de gauche, l'élément site_wide_promotion est désormais répertorié dans la section "Ressources" sous qwiklabs-gcp-xxx > ecommerce.

  1. Copiez et collez la requête ci-dessous pour savoir combien de produits sont en liquidation :
SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%'
  1. Cliquez sur EXÉCUTER.

Remarque : La syntaxe ne comporte pas de condition de jointure (par exemple, ON ou USING) pour une jointure CROSS JOIN (JOINTURE CROISÉE). Le champ est simplement multiplié en fonction du premier ensemble de données ou d'une réduction de 0,05 pour tous les articles.

Voyons quelles sont les conséquences de l'ajout involontaire de plusieurs enregistrements dans la table des remises.

  1. Copiez et collez la requête ci-dessous pour insérer deux autres enregistrements dans la table de promotion :
#standardSQL INSERT INTO ecommerce.site_wide_promotion (discount) VALUES (.04), (.03);
  1. Cliquez sur EXÉCUTER.

Examinons ensuite les valeurs de données de la table de promotion.

  1. Copiez et collez la requête ci-dessous :
#standardSQL SELECT discount FROM ecommerce.site_wide_promotion
  1. Cliquez sur EXÉCUTER.

Que se passe-t-il lorsque vous appliquez à nouveau la remise sur les 82 produits en liquidation ?

  1. Copiez et collez la requête ci-dessous :
#standardSQL # now what happens: SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%'
  1. Cliquez sur EXÉCUTER.

Combien de produits sont renvoyés ?

Réponse : au lieu de 82, vous en obtenez maintenant 246, ce qui représente plus d'enregistrements que n'en contient votre table d'origine.

Penchons-nous sur la cause sous-jacente en examinant un SKU.

  1. Copiez et collez la requête ci-dessous :
#standardSQL SELECT DISTINCT productSKU, v2ProductCategory, discount FROM `data-to-insights.ecommerce.all_sessions_raw` AS website CROSS JOIN ecommerce.site_wide_promotion WHERE v2ProductCategory LIKE '%Clearance%' AND productSKU = 'GGOEGOLC013299'
  1. Cliquez sur EXÉCUTER.

Quel a été l'effet de la jointure croisée ?

Réponse :

Dans la mesure où il existe trois codes de réduction à associer, vous multipliez l'ensemble de données d'origine par 3.

Remarque : Ce comportement ne se limite pas aux jointures croisées. Avec une jointure normale, il est possible de croiser involontairement des jointures lorsque les relations de données sont de type plusieurs à plusieurs, ce qui peut facilement renvoyer des millions, voire des milliards d'enregistrements.

Vous devez donc connaître les relations entre vos données avant de procéder à une jointure et ne pas partir du principe que les clés sont uniques.

Tâche 7 : Dédupliquer les lignes

Au début de l'atelier, vous avez écrit une requête affichant plusieurs noms de produits pour un même SKU. Dédupliquer des enregistrements, comme nous allons le voir ici, est une compétence courante chez les analystes de données. Recherchez une façon de ne sélectionner qu’un seul produit par SKU.

Commençons par la requête permettant d'afficher tous les noms de produits par SKU.

  1. Copiez et collez la requête ci-dessous :
#standardSQL # recall the earlier query that showed multiple product_names for each SKU SELECT DISTINCT COUNT(DISTINCT v2ProductName) AS product_count, STRING_AGG(DISTINCT v2ProductName LIMIT 5) AS product_name, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE v2ProductName IS NOT NULL GROUP BY productSKU HAVING product_count > 1 ORDER BY product_count DESC
  1. Cliquez sur EXÉCUTER.

Étant donné que les noms de produits sont pour la plupart extrêmement ressemblants (et que vous souhaitez mapper un seul SKU à un seul produit), saisissez une requête pour ne choisir que l'un des noms de produits. Ce post StackOverflow de Felipe Hoffa vous servira de source d’inspiration.

  1. Copiez et collez la requête ci-dessous :
#standardSQL # take the one name associated with a SKU WITH product_query AS ( SELECT DISTINCT v2ProductName, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE v2ProductName IS NOT NULL ) SELECT k.* FROM ( # aggregate the products into an array and # only take 1 result SELECT ARRAY_AGG(x LIMIT 1)[OFFSET(0)] k FROM product_query x GROUP BY productSKU # this is the field you want deduplicated );
  1. Cliquez sur EXÉCUTER.

Vous avez réussi à dédupliquer les noms de produits pour chaque SKU. Testez la requête ci-dessus avec vos ensembles de données afin de dédupliquer vos champs avant de les associer à d'autres ensembles de données.

Tâche 8 : Tester vos connaissances

Félicitations !

Vous avez terminé cet atelier et évité les pièges que peuvent poser les jointures SQL en identifiant les enregistrements en double et en apprenant quand utiliser chaque type de jointure. Bon travail !

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.