Istruzioni e requisiti di configurazione del lab
Proteggi il tuo account e i tuoi progressi. Per eseguire questo lab, utilizza sempre una finestra del browser privata e le credenziali del lab.

Risoluzione dei problemi e degli ostacoli dell'unione dei dati

Lab 15 minuti universal_currency_alt 5 crediti show_chart Intermedio
info Questo lab potrebbe incorporare strumenti di AI a supporto del tuo apprendimento.
Questi contenuti non sono ancora ottimizzati per i dispositivi mobili.
Per un'esperienza ottimale, visualizza il sito su un computer utilizzando un link inviato via email.

GSP412

Logo dei self-paced lab di Google Cloud

Panoramica

BigQuery è il database di analisi NoOps a basso costo e completamente gestito di Google. Con BigQuery puoi eseguire query su molti terabyte di dati senza dover gestire alcuna infrastruttura o aver bisogno di un amministratore del database. BigQuery utilizza SQL e sfrutta i vantaggi offerti dal modello di pagamento a consumo. BigQuery permette di concentrarsi sull'analisi dei dati per trovare insight significativi.

L'unione delle tabelle di dati può fornire insight significativi sul set di dati. Tuttavia, quando unisci i dati, ci sono degli ostacoli comuni che potrebbero compromettere i risultati. Questo lab si concentra su come evitare questi ostacoli. Tipi di unioni:

  • Cross join: combina ogni riga del primo set di dati con ogni riga del secondo set di dati. Ogni combinazione è rappresentata nell'output.
  • Inner join: i valori chiave devono esistere in entrambe le tabelle affinché i record vengano visualizzati nella tabella dei risultati. I record vengono visualizzati nell'unione solo se in entrambe le tabelle sono presenti corrispondenze per le coppie chiave-valore.
  • Left join: ogni riga della tabella di sinistra viene visualizzata nei risultati, indipendentemente dal fatto che esistano corrispondenze nella tabella di destra.
  • Right join: comportamento inverso del left join. Ogni riga della tabella di destra viene visualizzata nei risultati, indipendentemente dal fatto che esistano corrispondenze nella tabella di sinistra.

Per ulteriori informazioni sui join, consulta la pagina dedicata.

Il set di dati che utilizzerai è un set di dati di e-commerce che ha milioni di record di Google Analytics per il Google Merchandise Store caricati su BigQuery. In questo lab avrai a disposizione una copia del set di dati ed esplorerai i campi e le righe disponibili per trovare insight.

Per informazioni sulla sintassi utili per seguire e aggiornare le query, consulta la pagina sulla sintassi delle query SQL standard.

Attività previste

In questo lab imparerai a:

  • Utilizzare BigQuery per esplorare e risolvere i problemi relativi alle righe duplicate in un set di dati.
  • Creare join tra tabelle di dati.
  • Scegliere tra diversi tipi di join.

Configurazione e requisiti

Prima di fare clic sul pulsante Avvia lab

Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Inizia il lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.

Con questo lab pratico avrai la possibilità di completare le attività in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.

Per completare il lab, avrai bisogno di:

  • Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: per eseguire questo lab, utilizza una finestra del browser in modalità di navigazione in incognito (consigliata) o privata. Ciò evita conflitti tra il tuo account personale e l'account studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
  • È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: utilizza solo l'account studente per questo lab. Se utilizzi un altro account Google Cloud, potrebbero essere addebitati costi su quell'account.

Come avviare il lab e accedere alla console Google Cloud

  1. Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento. A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:

    • Il pulsante Apri la console Google Cloud
    • Tempo rimanente
    • Credenziali temporanee da utilizzare per il lab
    • Altre informazioni per seguire questo lab, se necessario
  2. Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in incognito se utilizzi il browser Chrome).

    Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.

    Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.

    Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account.
  3. Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo di accesso.

    {{{user_0.username | "Username"}}}

    Puoi trovare il Nome utente anche nel riquadro Dettagli lab.

  4. Fai clic su Avanti.

  5. Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.

    {{{user_0.password | "Password"}}}

    Puoi trovare la Password anche nel riquadro Dettagli lab.

  6. Fai clic su Avanti.

    Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud. Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
  7. Fai clic nelle pagine successive:

    • Accetta i termini e le condizioni.
    • Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
    • Non registrarti per le prove gratuite.

Dopo qualche istante, la console Google Cloud si apre in questa scheda.

Nota: per accedere ai prodotti e ai servizi Google Cloud, fai clic sul menu di navigazione o digita il nome del servizio o del prodotto nel campo Cerca. Icona del menu di navigazione e campo Cerca

Apri la console BigQuery

  1. Nella console Google Cloud, seleziona il menu di navigazione > BigQuery:

Si aprirà la finestra con il messaggio Ti diamo il benvenuto in BigQuery su Cloud Console. Questa finestra fornisce un link alla guida rapida e alle note di rilascio.

  1. Fai clic su Fine.

Si aprirà la console di BigQuery.

Attività 1: crea un nuovo set di dati per l'archiviazione delle tue tabelle

Nel progetto BigQuery, crea un nuovo set di dati denominato ecommerce.

  1. Fai clic sui tre puntini accanto all'ID progetto e seleziona Crea set di dati.

Opzione Crea set di dati evidenziata

Si apre la finestra di dialogo Crea set di dati.

  1. Imposta l'ID set di dati su ecommerce.

  2. Lascia i valori predefiniti per tutte le altre opzioni e fai clic su Crea set di dati.

Nel riquadro a sinistra, sotto il tuo progetto, compare una tabella ecommerce.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Crea un nuovo set di dati

Attività 2: blocca il progetto del lab in BigQuery

Scenario: il tuo team ti fornisce un nuovo set di dati sul livello delle scorte in inventario per ciascuno dei prodotti in vendita sul tuo sito web di e-commerce. Vuoi familiarizzare con i prodotti sul sito web e con i campi che potresti utilizzare per unire potenzialmente altri set di dati.

Il progetto con il nuovo set di dati è data-to-insights.

  1. Nella console Google Cloud, nel menu di navigazione (Icona menu di navigazione), fai clic su BigQuery.

Si aprirà una finestra con il messaggio Ti diamo il benvenuto in BigQuery sulla console Cloud.

Nota: la finestra del messaggio Ti diamo il benvenuto in BigQuery sulla console Cloud fornisce un link alla guida rapida e agli aggiornamenti dell'interfaccia utente.
  1. Fai clic su Fine.

  2. I set di dati pubblici BigQuery non vengono visualizzati per impostazione predefinita. Per aprire il progetto di set di dati pubblici, copia data-to-insights (che dovrai incollare in una finestra di dialogo nel passaggio successivo).

  3. Fai clic su + Aggiungi dati > Aggiungi un progetto a Speciali per nome, quindi incolla il nome data-to-insights.

  4. Fai clic su Aggiungi a Speciali.

Il progetto data-to-insights viene elencato nella sezione Spazio di esplorazione.

Attività 3: esamina i campi

Ora, familiarizza con i prodotti e i campi del sito web che puoi utilizzare per creare query al fine di analizzare il set di dati.

  1. Nel riquadro a sinistra, nella sezione Risorse, vai a data-to-insights > ecommerce > all_sessions_raw.

  2. A destra, sotto l'editor di query, fai clic sulla scheda Schema per visualizzare i campi e le rispettive informazioni.

Attività 4: identifica un campo chiave nel set di dati di e-commerce

Esamina ulteriormente i prodotti e i campi. Vuoi familiarizzare con i prodotti sul sito web e con i campi che potresti utilizzare per unire potenzialmente altri set di dati.

Esamina i record

In questa sezione puoi vedere quanti nomi di prodotto e SKU di prodotti sono presenti sul tuo sito web e se uno di questi campi è univoco.

  1. Scopri quanti nomi di prodotti e SKU di prodotti sono presenti sul sito web. Copia e incolla la query seguente nell'EDITOR di BigQuery:
#standardSQL # how many products are on the website? SELECT DISTINCT productSKU, v2ProductName FROM `data-to-insights.ecommerce.all_sessions_raw`
  1. Fai clic su Esegui.

Esamina i risultati dell'impaginazione nella console per il numero totale di record restituiti.

Risultati della query con l'impaginazione evidenziata

Attenzione, però: i risultati indicano che ci sono così tanti SKU di prodotti unici? Una delle prime query che eseguirai come analista di dati è relativa all'unicità dei valori dei dati.

  1. Cancella la query precedente ed esegui quella seguente per elencare il numero di SKU distinti utilizzando DISTINCT:
#standardSQL # find the count of unique SKUs SELECT DISTINCT productSKU FROM `data-to-insights.ecommerce.all_sessions_raw`

Esamina la relazione tra SKU e nome

Ora determina quali prodotti hanno più di uno SKU e quali SKU hanno più di un nome di prodotto.

  1. Cancella la query precedente ed esegui quella seguente per determinare se alcuni nomi di prodotto hanno più di uno SKU. Usa la funzione STRING_AGG() per aggregare tutti gli SKU di prodotto associati a un nome di prodotto in valori separati da virgole.
SELECT v2ProductName, COUNT(DISTINCT productSKU) AS SKU_count, STRING_AGG(DISTINCT productSKU LIMIT 5) AS SKU 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
  1. Fai clic su Esegui.

Risultati:

Risultati della query

Il catalogo del sito web di e-commerce mostra che ogni nome di prodotto può avere più opzioni (taglia, colore), che vengono vendute come SKU separati.

Hai visto che un prodotto può avere 12 SKU. E se ci fosse un solo SKU? Dovrebbe essere consentito che appartenga a più di un prodotto?

  • Cancella la query precedente ed esegui quella seguente per scoprirlo:
SELECT productSKU, COUNT(DISTINCT v2ProductName) AS product_count, STRING_AGG(DISTINCT v2ProductName LIMIT 5) AS product_name 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

Risultati della query

Nota: prova a sostituire STRING_AGG() con ARRAY_AGG(). Interessante, vero? BigQuery supporta in modo nativo i valori di array nidificati. Puoi saperne di più nella guida all'utilizzo degli array.

Nella prossima sezione scoprirai perché questa relazione di dati many-to-many sarà un problema.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Identifica un campo chiave nel set di dati di e-commerce

Attività 5: ostacolo: chiave non univoca

Nel monitoraggio dell'inventario, uno SKU è progettato per identificare in modo univoco un solo prodotto. Nel nostro caso, sarà la base della condizione JOIN per cercare informazioni da altre tabelle. Avere una chiave non univoca può causare seri problemi di dati, come vedrai.

  1. Scrivi una query per identificare tutti i nomi di prodotto per lo SKU 'GGOEGPJC019099'.

Possibile soluzione:

SELECT DISTINCT v2ProductName, productSKU FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGPJC019099'
  1. Fai clic su Esegui.

v2ProductName

productSKU

7" Dog Frisbee

GGOEGPJC019099

7" Dog Frisbee

GGOEGPJC019099

Google 7-inch Dog Flying Disc Blue

GGOEGPJC019099

Dai risultati della query, sembra che ci siano tre nomi diversi per lo stesso prodotto. In questo esempio, un nome contiene un carattere speciale e l'altro è leggermente diverso:

Unione dei dati del sito web con l'elenco dell'inventario dei prodotti

Ora vediamo l'impatto dell'unione su un set di dati con più prodotti per un singolo SKU. Per prima cosa, analizza il set di dati dell'inventario dei prodotti (la tabella products) per vedere se questo SKU è univoco.

  • Cancella la query precedente ed esegui quella seguente:
SELECT SKU, name, stockLevel FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGPJC019099'

Ostacolo per l'unione: relazione SKU many-to-one involontaria

Ora hai due set di dati: uno per il livello delle scorte in inventario e l'altro per l'analisi del sito web. Unisci mediante JOIN il set di dati dell'inventario con i nomi di prodotto e gli SKU del sito web in modo da poter associare il livello di scorte dell'inventario a ogni prodotto in vendita sul sito web.

  1. Cancella la query precedente ed esegui quella seguente:
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'

Ora espandiamo la query precedente per sommare mediante SUM semplicemente l'inventario disponibile per prodotto.

  1. Cancella la query precedente ed esegui quella seguente:
WITH inventory_per_sku AS ( 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' ) SELECT productSKU, SUM(stockLevel) AS total_inventory FROM inventory_per_sku GROUP BY productSKU

C'è un problema: il risultato è 154 x 3 = 462, ovvero il triplo dell'inventario. Questo è chiamato cross join involontario (un argomento che tratteremo in seguito).

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Ostacolo: chiave non univoca

Attività 6: soluzione per evitare l'ostacolo: usa SKU distinti prima dell'unione

Quali sono le opzioni per risolvere il problema del triplo conteggio? Sevi anzitutto selezionare solo gli SKU distinti dal sito web prima di eseguire l'unione in altri set di dati.

Sai che possono esistere più nomi di prodotto (come 7" Dog Frisbee) che condividono un singolo SKU.

  1. Raccogli tutti i nomi possibili in un array:
SELECT productSKU, ARRAY_AGG(DISTINCT v2ProductName) AS push_all_names_into_array FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGAAX0098' GROUP BY productSKU

Ora, invece di avere una riga per ogni nome di prodotto, hai solo una riga per ogni SKU univoco.

  1. Se volessi deduplicare i nomi di prodotto, potresti persino limitare l'array usando LIMIT, in questo modo:
SELECT productSKU, ARRAY_AGG(DISTINCT v2ProductName LIMIT 1) AS push_all_names_into_array FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE productSKU = 'GGOEGAAX0098' GROUP BY productSKU

Ostacolo dell'unione: perdita di record di dati dopo l'unione

Ora puoi unire di nuovo il set di dati dell'inventario dei prodotti.

  1. Cancella la query precedente ed esegui quella seguente:
#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

Sembra che siano stati persi 819 SKU dopo l'unione dei set di dati. Per indagare, aumenta la specificità nei campi (una colonna SKU per ogni set di dati):

  1. Cancella la query precedente ed esegui quella seguente:
#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 you dig deeper?

Sembra che gli SKU siano presenti in entrambi i set di dati dopo l'unione per questi 1090 record. Come puoi trovare i record mancanti?

Soluzione per l'ostacolo dell'unione: seleziona il tipo di join corretto e filtra per NULL

Il tipo di JOIN predefinito è INNER JOIN, che restituisce i record solo se esiste una corrispondenza degli SKU sia nella tabella di sinistra che in quella di destra che sono state unite.

  1. Riscrivi la query precedente per utilizzare un tipo di join diverso in modo includere tutti i record della tabella del sito web, indipendentemente dal fatto che esista una corrispondenza per un record SKU dell'inventario dei prodotti. Opzioni di tipo di join: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN.

Possibile soluzione:

#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. Fai clic su Esegui.

Hai utilizzato correttamente un LEFT JOIN per restituire tutti i 1909 SKU originali del sito web nei risultati.

Quanti SKU mancano nel tuo set dell'inventario dei prodotti?

  1. Scrivi una query per filtrare i valori NULL dalla tabella "inventory" (inventario).

Possibile soluzione:

#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. Fai clic su Esegui.

Domanda: quanti prodotti mancano?

Risposta: mancano 819 prodotti (SKU IS NULL) dal set di dati dell'inventario dei prodotti.

  • Cancella la query precedente ed esegui quella seguente per confermare l'utilizzo di uno degli SKU specifici del set di dati del sito web:
#standardSQL # you can even pick one and confirm SELECT * FROM `data-to-insights.ecommerce.products` WHERE SKU = 'GGOEGATJ060517' # query returns zero results

E se la situazione fosse inversa? Esistono prodotti nel set di dati dell'inventario che non sono presenti sul sito web?

  1. Scrivi una query utilizzando un tipo di join diverso per scoprirlo.

Possibile soluzione:

#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. Fai clic su Esegui.

Risposta: sì. Mancano due SKU di prodotto nel set di dati del sito web

Aggiungi altri campi dal set di dati dell'inventario dei prodotti per maggiori dettagli.

  • Cancella la query precedente ed esegui quella seguente:
#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

Perché i prodotti riportati di seguito potrebbero mancare nel set di dati del sito web di e-commerce?

website_SKU

SKU

name

orderedQuantity

stockLevel

restockingLeadTime

sentimentScore

sentimentMagnitude

null

GGOBJGOWUSG69402

USB wired soundbar - in store only

10

15

2

1,0

1,0

null

GGADFBSBKS42347

PC gaming speakers

0

100

1

null

null

Risposte possibili:

  • Un nuovo prodotto (senza ordini, senza sentimentScore) e un prodotto "in store only" (solo in negozio)
  • Un altro è un nuovo prodotto con 0 ordini

Perché il nuovo prodotto non viene visualizzato nel set di dati del sito web?

  • Il set di dati del sito web è costituito da transazioni di ordini che in passato sono stati effettuati dai clienti. I prodotti nuovi e che non sono mai stati venduti non verranno visualizzati nell'analisi web finché non vengono visualizzati o acquistati.
Nota: in genere, le query di produzione non contengono RIGHT JOIN. Basta eseguire un LEFT JOIN e invertire l'ordine delle tabelle.

E se volessi eseguire una query che elencasse tutti i prodotti mancanti nel sito web o nell'inventario?

  1. Scrivi una query utilizzando un tipo di join diverso.

Possibile soluzione:

#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. Fai clic su Esegui.

Ci sono 819 + 2 = 821 SKU di prodotti.

LEFT JOIN + RIGHT JOIN = FULL JOIN, che restituisce tutti i record di entrambe le tabelle indipendentemente dalle chiavi di join corrispondenti. Basta, perciò, escludere le discrepanze su entrambi i lati

Ostacolo dell'unione: cross join involontario

Non sapere la relazione tra le chiavi delle tabelle di dati (1:1, 1:N, N:N) può restituire risultati imprevisti e anche ridurre significativamente le prestazioni delle query.

L'ultimo tipo di unione è CROSS JOIN.

Crea una nuova tabella con la percentuale di sconto a livello di sito che vuoi applicare ai prodotti della categoria "Clearance" (Liquidazione).

  1. Cancella la query precedente ed esegui quella seguente:
#standardSQL CREATE OR REPLACE TABLE ecommerce.site_wide_promotion AS SELECT .05 AS discount;

Nel riquadro a sinistra, la voce site_wide_promotion ora è elencata nella sezione Risorse sotto il progetto e il set di dati.

  1. Cancella la query precedente ed esegui quella seguente per scoprire quanti prodotti sono in liquidazione:
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%'

Nota: nel caso dei CROSS JOIN, non esiste una condizione di join (ad es. ON o USING). Il campo viene semplicemente moltiplicato per il primo set di dati o per uno sconto dello 0,05 su tutti gli articoli.

Vedi l'impatto dell'aggiunta involontaria di più di un record nella tabella degli sconti.

  1. Cancella la query precedente ed esegui quella seguente per inserire altri due record nella tabella per le promozioni:
INSERT INTO ecommerce.site_wide_promotion (discount) VALUES (.04), (.03);

Ora visualizza i valori dei dati nella tabella delle promozioni.

  1. Cancella la query precedente ed esegui quella seguente:
SELECT discount FROM ecommerce.site_wide_promotion

Quanti record sono stati restituiti?

Risposta: 3

Cosa succede se applichi di nuovo lo sconto a tutti e 82 i prodotti in liquidazione?

  1. Cancella la query precedente ed esegui quella seguente:
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%'

Quanti prodotti vengono restituiti?

Risposta: invece di 82, ora ne vengono restituiti 246, ovvero più record di quelli iniziali nella tabella originale.

Per esaminare la causa sottostante, adesso analizza uno SKU del prodotto.

  1. Cancella la query precedente ed esegui quella seguente:
#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'

Qual è stato l'impatto del CROSS JOIN?

Risposta: poiché ci sono 3 codici sconto su cui eseguire il cross join, stai moltiplicando il set di dati originale per 3.

Nota: questo comportamento non è limitato ai cross join. Con un join normale, puoi eseguire inavvertitamente un cross join quando le relazioni tra i dati sono di tipo many-to-many, il che può facilmente far sì che vengano restituiti involontariamente milioni o addirittura miliardi di record.

La soluzione è conoscere le relazioni tra i dati prima di unirli e non dare per scontato che le chiavi siano univoche.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.

Soluzione per gli ostacoli dell'unione

Complimenti!

Hai concluso questo lab e hai capito come superare alcuni ostacoli dei join SQL identificando i record duplicati e sapendo quando utilizzare ciascun tipo di JOIN. Ben fatto!

Prossimi passi/Scopri di più

Formazione e certificazione Google Cloud

… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.

Ultimo aggiornamento del manuale: 19 agosto 2025

Ultimo test del lab: 19 agosto 2025

Copyright 2026 Google LLC. Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.

Prima di iniziare

  1. I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
  2. I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
  3. In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare

Utilizza la navigazione privata

  1. Copia il nome utente e la password forniti per il lab
  2. Fai clic su Apri console in modalità privata

Accedi alla console

  1. Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
  2. Accetta i termini e salta la pagina di ripristino delle risorse
  3. Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso

Questi contenuti non sono al momento disponibili

Ti invieremo una notifica via email quando sarà disponibile

Bene.

Ti contatteremo via email non appena sarà disponibile

Un lab alla volta

Conferma per terminare tutti i lab esistenti e iniziare questo

Utilizza la navigazione privata per eseguire il lab

Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.