Freigeben über


Wanderbricks-Datensatz

Das wanderbricks Schema im samples Katalog enthält ein simuliertes Dataset der Reisebuchungsplattform. Es modelliert einen Ferienhausmarkt mit Tabellen, die Benutzer und Gastgeber, Immobilienauflistungen und Ziele, Buchungen und Zahlungen, Rezensionen und Supportprotokolle und Clickstream-Aktivitäten abdecken.

Verwenden Sie dieses Dataset, um Datentechnikpipelinen, Analysedashboards und Machine Learning-Workflows zu untersuchen, ohne Ihre eigenen Daten zu laden.

Zugreifen auf das Dataset

Das Wanderbricks-Dataset ist im samples Katalog vorgeladen und ist in Unity Catalog-aktivierten Arbeitsbereichen verfügbar.

So listen Sie alle Tabellen im Schema auf:

SHOW TABLES IN samples.wanderbricks;

So zeigen Sie eine Vorschau von Daten in einer bestimmten Tabelle an:

SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;

Ersetzen Sie <table-name> durch die Tabelle, die Sie durchsuchen möchten, z. B. bookings oder reviews.

Tabellen

Das wanderbricks Schema enthält die folgenden Tabellen. Führen Sie SHOW TABLES IN samples.wanderbricks für die vollständige Liste aus.

Tabelle Beschreibung
users Benutzerprofile, einschließlich Name, E-Mail, Land und Benutzertyp.
hosts Host-Profile, die mit Immobilienanzeigen verknüpft sind, einschließlich Konto- und Kontaktdetails.
properties Immobilienangebote mit Details wie Titel, Typ, Preis und Standort.
bookings Buchungsdatensätze mit Ein-/Auscheckdatum, Gästeanzahl, Gesamtbeträge und Status.
payments Zahlungsdatensätze mit Methoden, Betrag, Status und Buchungsreferenzen.
booking_updates Buchungsstatusänderungsdatensätze für CdC-Pipelines (Change Data Capture).
reviews Benutzerrezensionen für Immobilien, einschließlich Bewertungen, Kommentaren und einer is_deleted Kennzeichnung für Soft-Löschungen.
clickstream Benutzeraktivitätsereignisse (Ansichten, Klicks, Suchen, Filter) mit geschachtelten Metadaten für Gerät und Referrer.
page_views Seitenansichtsereignisse, die an Benutzer und Eigenschaften gebunden sind.
customer_support_logs Unterstützen Sie Ticketprotokolle mit geschachtelten Arrays von Nachrichten, einschließlich Absender und Stimmung.
destinations Zielorte mit Namen und Beschreibungen, die in Immobilienauflistungen referenziert werden.

Primäre Tabellenbeziehungen

Das folgende Diagramm zeigt die Verbindungen zwischen Benutzern, Buchungen, Eigenschaften und verwandten Tabellen.

Wanderbricks-Diagramm für primäre Tabellenbeziehungen mit Verbindungen zwischen Benutzern, Buchungen, Eigenschaften und verwandten Tabellen.

  • Benutzer und Hosts
    • users steht für Reisende und Geschäftskunden.
    • hosts stellt Eigentümer und Verwalter dar.
  • Eigenschaften und Ziele
    • Jede Zeile in properties ist eine Auflistung, die einem Host gehört.
    • properties linkt mit destinations um zu modellieren, wo sich der Eintrag befindet.
  • Buchungen und Zahlungen
    • bookings verbindet Reisende (user_id) mit Eigenschaften (property_id).
    • payments und booking_updates verweisen auf booking_id zur Erfassung von Finanztransaktionen und Statusänderungen.
  • Verhalten und Erfahrung
    • clickstream und page_views verfolgen, wie Benutzer Einträge durchsuchen und mit ihnen interagieren.
    • reviews erfasst Feedback nach dem Aufenthalt nach Benutzer und Eigenschaft.
    • customer_support_logs Datensätze unterstützen Interaktionen, die an einen Benutzer gebunden sind.

Beispielabfragen

Die folgenden Beispiele zeigen, wie sie das Wanderbricks-Dataset abfragen.

Verknüpfen von Benutzern, Buchungen und Objekten

Letzte Buchungen mit Gast- und Immobiliendetails zurückgeben:

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)

Analysieren von Clickstream-Ereignissen nach Gerät

Zusammenfassen des Engagements nach Ereignistyp und Gerät:

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)

Berechnen durchschnittlicher Bewertungen pro Eigenschaft

Suchen Sie nach den am besten bewerteten Immobilien mit ausreichend vielen Bewertungen.

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)