Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le wanderbricks schéma du samples catalogue contient un jeu de données de plateforme de réservation de voyages simulé. Il modélise une place de marché de location de vacances, avec des tables couvrant les utilisateurs et les hôtes, les annonces de propriétés et les destinations, les réservations et les paiements, les avis et les journaux d'assistance, et l'activité de parcours de clics.
Utilisez ce jeu de données pour explorer les pipelines d’ingénierie des données, les tableaux de bord d’analyse et les flux de travail Machine Learning sans charger vos propres données.
Accéder au jeu de données
Le jeu de données Wanderbricks est préchargé dans le samples catalogue et est disponible dans les espaces de travail compatibles avec le catalogue Unity.
Pour répertorier toutes les tables du schéma :
SQL
SHOW TABLES IN samples.wanderbricks;
Python
display(spark.sql("SHOW TABLES IN samples.wanderbricks"))
Pour afficher un aperçu des données dans une table spécifique :
SQL
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
Python
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 wanderbricks schéma inclut les tableaux suivants. Exécutez SHOW TABLES IN samples.wanderbricks pour obtenir la liste complète.
| Table | Description |
|---|---|
users |
Profils utilisateur, y compris le nom, l’e-mail, le pays ou la région et le type d’utilisateur. |
hosts |
Profils d’hôte liés aux listes de propriétés, y compris les détails du compte et du contact. |
properties |
Listes de propriétés avec des détails tels que le titre, le type, le prix et la destination. |
bookings |
Enregistrements de réservation avec des dates d’arrivée/de départ, le nombre de clients, les montants totaux, et l’état. |
payments |
Enregistrements de paiement avec la méthode, le montant, l’état et les références de réservation. |
booking_updates |
Enregistrements de modification de l’état de réservation pour les pipelines de capture de données modifiées (CDC). |
reviews |
Avis des utilisateurs des propriétés, y compris les évaluations, les commentaires et un is_deleted indicateur pour les suppressions douces. |
clickstream |
Événements d’activité utilisateur (vues, clics, recherches, filtres) avec des métadonnées imbriquées pour l’appareil et le référent. |
page_views |
Les événements de consultation de page liés aux utilisateurs et aux propriétés. |
customer_support_logs |
Prendre en charge les journaux des tickets avec des tableaux imbriqués de messages, y compris l’expéditeur et le sentiment. |
destinations |
Emplacements de destination avec noms et descriptions, référencés par des listes de propriétés. |
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 de propriétés et les opérateurs.
-
- Propriétés et destinations
- Chaque ligne
propertiesest une liste appartenant à un hôte. -
propertiesse connecte àdestinationspour modéliser où se trouve l'annonce.
- Chaque ligne
- Réservations et paiements
-
bookingsconnecte les voyageurs (user_id) aux propriétés (property_id). -
paymentsetbooking_updatesutilisentbooking_idpour capturer les transactions financières et les changements d'état.
-
- Comportement et expérience
-
clickstreametpage_viewssuivre la façon dont les utilisateurs parcourent et interagissent avec les listes. -
reviewscapture les commentaires post-séjour par utilisateur et propriété. -
customer_support_logsles enregistrements facilitent les interactions attachées à un utilisateur.
-
Exemples de requêtes
Les exemples suivants montrent comment interroger le jeu de données Wanderbricks.
Joindre des utilisateurs, des réservations et des propriétés
Retournez les réservations récentes avec les détails de l’invité et de la propriété :
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)
Analyser les événements clickstream par appareil
Résumez l’engagement par type d’événement et appareil :
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)
Calcul des évaluations moyennes par propriété
Recherchez les établissements les mieux notés avec un volume d'avis suffisant :
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)