GSP412
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
-
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
-
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.
-
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.
-
Fai clic su Avanti.
-
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.
-
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.
-
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.
Apri la console BigQuery
- 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.
- 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.
- Fai clic sui tre puntini accanto all'ID progetto e seleziona Crea set di dati.

Si apre la finestra di dialogo Crea set di dati.
-
Imposta l'ID set di dati su ecommerce.
-
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.
- Nella console Google Cloud, nel 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.
-
Fai clic su Fine.
-
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).
-
Fai clic su + Aggiungi dati > Aggiungi un progetto a Speciali per nome, quindi incolla il nome data-to-insights.
-
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.
-
Nel riquadro a sinistra, nella sezione Risorse, vai a data-to-insights > ecommerce > all_sessions_raw.
-
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.
- 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`
- Fai clic su Esegui.
Esamina i risultati dell'impaginazione nella console per il numero totale di record restituiti.

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

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

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.
-
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'
- 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.
- 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.
- 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.
- 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.
- 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.
- 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):
- 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.
-
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
- 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?
-
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
- 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?
- 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
- 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?
- 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
- 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).
- 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.
- 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.
- 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.
- 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?
- 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.
- 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.