Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo wanderbricks schema nel samples catalogo contiene un set di dati simulato della piattaforma di prenotazione viaggi. Modella un marketplace per le vacanze, con tabelle che coprono utenti e host, elenchi di proprietà e destinazioni, prenotazioni e pagamenti, revisioni e log di supporto e attività clickstream.
Usare questo set di dati per esplorare pipeline di ingegneria dei dati, dashboard di analisi e flussi di lavoro di Machine Learning senza caricare dati personalizzati.
Accedere al set di dati
Il set di dati Wanderbricks è precaricato nel catalogo samples ed è disponibile nelle aree di lavoro con Unity Catalog abilitato.
Per elencare tutte le tabelle nello schema:
SQL
SHOW TABLES IN samples.wanderbricks;
Python
display(spark.sql("SHOW TABLES IN samples.wanderbricks"))
Per visualizzare in anteprima i dati in una tabella specifica:
SQL
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
Python
display(spark.read.table("samples.wanderbricks.<table-name>").limit(10))
Sostituire <table-name> con la tabella da esplorare, ad esempio bookings o reviews.
Tables
Lo wanderbricks schema include le tabelle seguenti. Eseguire SHOW TABLES IN samples.wanderbricks per l'elenco completo.
| Tabella | Descrizione |
|---|---|
users |
Profili utente, tra cui nome, posta elettronica, paese o area geografica e tipo di utente. |
hosts |
Profili host collegati alle liste di proprietà, inclusi i dettagli dell'account e del contatto. |
properties |
Elenchi di proprietà con dettagli come titolo, tipo, prezzo e destinazione. |
bookings |
Record di prenotazione con date di check-in/check-out, conteggi degli ospiti, importi totali e stato. |
payments |
Record di pagamento con metodi, importo, stato e riferimenti di prenotazione. |
booking_updates |
Record di modifica dello stato di prenotazione per le pipeline di Change Data Capture (CDC). |
reviews |
Le recensioni degli utenti sulle proprietà, incluse valutazioni, commenti e un is_deleted flag per le eliminazioni temporanee. |
clickstream |
Eventi di attività utente (visualizzazioni, clic, ricerche, filtri) con metadati annidati per il dispositivo e referrer. |
page_views |
Eventi di visualizzazione pagina associati a utenti e proprietà. |
customer_support_logs |
Supportare i log dei ticket con matrici annidate di messaggi, tra cui mittente e sentiment. |
destinations |
Posizioni di destinazione con nomi e descrizioni, a cui fanno riferimento elenchi di proprietà. |
Relazioni tra tabelle primarie
Il diagramma seguente illustra le connessioni tra utenti, prenotazioni, proprietà e tabelle correlate.
- Utenti e host
-
usersrappresenta i viaggiatori e i clienti aziendali. -
hostsrappresenta i proprietari e gli operatori delle proprietà.
-
- Proprietà e destinazioni
- Ogni riga in
propertiesè un elenco di proprietà di un host. -
propertiessi collega adestinationsper modellare dove si trova l'elenco.
- Ogni riga in
- Prenotazioni e pagamenti
-
bookingsconnette i viaggiatori (user_id) alle proprietà (property_id). -
paymentsebooking_updatesriferimentobooking_idper acquisire le transazioni finanziarie e le modifiche dello stato.
-
- Comportamento ed esperienza
-
clickstreamepage_viewstengono traccia del modo in cui gli utenti esplorano e interagiscono con le inserzioni. -
reviewsraccoglie il feedback post-soggiorno da parte dell'utente e della proprietà. -
customer_support_logsi record supportano le interazioni legate a un utente.
-
Interrogazioni di esempio
Gli esempi seguenti illustrano come eseguire query sul set di dati Wanderbricks.
Aggiungere utenti, prenotazioni e proprietà
Restituisce prenotazioni recenti con i dettagli degli ospiti e delle proprietà:
SQL
SELECT
u.name AS guest_name,
p.title AS property_title,
b.check_in,
b.check_out,
b.total_amount,
b.status
FROM samples.wanderbricks.bookings AS b
JOIN samples.wanderbricks.users AS u
ON b.user_id = u.user_id
JOIN samples.wanderbricks.properties AS p
ON b.property_id = p.property_id
ORDER BY b.check_in DESC
LIMIT 10;
Python
bookings_df = spark.read.table("samples.wanderbricks.bookings")
users_df = spark.read.table("samples.wanderbricks.users")
properties_df = spark.read.table("samples.wanderbricks.properties")
result_df = (
bookings_df
.join(users_df, bookings_df.user_id == users_df.user_id)
.join(properties_df, bookings_df.property_id == properties_df.property_id)
.select(
users_df.name.alias("guest_name"),
properties_df.title.alias("property_title"),
bookings_df.check_in,
bookings_df.check_out,
bookings_df.total_amount,
bookings_df.status
)
.orderBy(bookings_df.check_in.desc())
.limit(10)
)
display(result_df)
Analizzare gli eventi clickstream in base al dispositivo
Riepilogare l'engagement in base al tipo di evento e al dispositivo:
SQL
SELECT
metadata.device AS device_type,
event,
COUNT(*) AS event_count
FROM samples.wanderbricks.clickstream
GROUP BY metadata.device, event
ORDER BY event_count DESC;
Python
from pyspark.sql.functions import col, count
clickstream_df = spark.read.table("samples.wanderbricks.clickstream")
result_df = (
clickstream_df
.groupBy(col("metadata.device").alias("device_type"), col("event"))
.agg(count("*").alias("event_count"))
.orderBy(col("event_count").desc())
)
display(result_df)
Calcolare le valutazioni medie per ogni proprietà
Trova le proprietà con la valutazione più alta che hanno un numero sufficiente di recensioni.
SQL
SELECT
p.title AS property_title,
p.property_type,
ROUND(AVG(r.rating), 2) AS avg_rating,
COUNT(r.rating) AS review_count
FROM samples.wanderbricks.properties AS p
JOIN samples.wanderbricks.reviews AS r
ON p.property_id = r.property_id
WHERE r.is_deleted = false
GROUP BY p.title, p.property_type
HAVING COUNT(r.rating) >= 5
ORDER BY avg_rating DESC
LIMIT 10;
Python
from pyspark.sql.functions import avg, count, round as pyspark_round, col
properties_df = spark.read.table("samples.wanderbricks.properties")
reviews_df = spark.read.table("samples.wanderbricks.reviews")
result_df = (
properties_df
.join(reviews_df, properties_df.property_id == reviews_df.property_id)
.where(reviews_df.is_deleted == False)
.groupBy(
properties_df.title.alias("property_title"),
properties_df.property_type
)
.agg(
pyspark_round(avg(reviews_df.rating), 2).alias("avg_rating"),
count(reviews_df.rating).alias("review_count")
)
.filter(col("review_count") >= 5)
.orderBy(col("avg_rating").desc())
.limit(10)
)
display(result_df)