Dataset Wanderbricks
Le schéma wanderbricks dans le catalogue samples contient un dataset simulé de plateforme de réservation de voyages. Il modélise une marketplace de locations de vacances, avec des tables couvrant les utilisateurs et les hôtes, les annonces immobilières et les destinations, les réservations et les paiements, les avis et les Logs d'assistance, et l'activité de clic.
Utilisez ce dataset pour explorer les pipelines de Data Engineering, les tableaux de bord d’analytique et les workflows de Machine Learning sans charger vos propres données.
Accéder au dataset
Le dataset Wanderbricks est préchargé dans le catalogue samples et est disponible dans les workspaces compatibles avec Unity Catalog.
Pour répertorier toutes les tables dans le schéma :
- SQL
- Python
SHOW TABLES IN samples.wanderbricks;
display(spark.sql("SHOW TABLES IN samples.wanderbricks"))
Pour prévisualiser les données dans une table spécifique :
- SQL
- Python
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
display(spark.read.table("samples.wanderbricks.<table-name>").limit(10))
Remplacez <table-name> par la table que vous souhaitez explorer, par exemple bookings ou reviews.
Tables
Le schéma wanderbricks comprend les tables suivantes : Exécutez SHOW TABLES IN samples.wanderbricks pour obtenir la liste complète.
Table | Description |
|---|---|
| Profils utilisateur comprenant le nom, l'e-mail, le pays ou la région et le type d'utilisateur. |
| Héberger les profils liés aux annonces de propriétés, y compris les détails du compte et des contacts. |
| Annonces immobilières avec des détails tels que le titre, le type, le prix et la destination. |
| Enregistrements de réservation avec dates d'arrivée/de départ, nombre d'invités, montants totaux et statut. |
| Enregistrements de paiement avec méthode, montant, statut et références de réservation. |
| Enregistrements de changement d'état de réservation pour les pipelines de capture de données modifiées (CDC). |
| Avis des utilisateurs sur les propriétés, y compris les évaluations, les commentaires et un indicateur |
| Événements d'activité utilisateur (vues, clics, recherches, filtres) avec des métadonnées imbriquées pour l'appareil et le référent. |
| Événements de consultation de page liés aux utilisateurs et aux propriétés. |
| Logs de tickets de support avec des tableaux imbriqués de messages, incluant l'expéditeur et le sentiment. |
| Emplacements de destination avec des noms et descriptions, référencés par des annonces immobilières. |
Relations de table principale
Le diagramme suivant montre les connexions entre les utilisateurs, les réservations, les propriétés et les tables associées.

-
Utilisateurs et hôtes
usersreprésente les voyageurs et les clients professionnels.hostsreprésente les propriétaires immobiliers et les exploitants.
-
Propriétés et destinations
- Chaque ligne dans
propertiesest une annonce appartenant à un hôte. propertiesliens versdestinationspour modéliser où l'annonce est située.
- Chaque ligne dans
-
Réservations et paiements
bookingsrelie les voyageurs (user_id) aux propriétés (property_id).paymentsetbooking_updatesréférencebooking_idpour capturer les transactions financières et les changements de statut.
-
Comportement et expérience
clickstreametpage_viewssuivent la façon dont les utilisateurs naviguent et interagissent avec les annonces.reviewsrecueille les commentaires après séjour par utilisateur et par propriété.customer_support_logsles enregistrements prennent en charge les interactions liées à un utilisateur.
Exemples de requêtes
Les exemples suivants montrent comment query le dataset Wanderbricks.
Joindre les utilisateurs, les réservations et les propriétés
Retourner les réservations récentes avec les détails des clients et des propriétés :
- SQL
- Python
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;
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)
Analyser les événements de flux de clics par appareil
Récapitulez l'engagement par type d'événement et appareil :
- SQL
- Python
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;
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)
Calculer les évaluations moyennes par propriété
Trouvez les propriétés les mieux notées avec un volume de commentaires suffisant :
- SQL
- Python
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;
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)