Share via


Wanderbricks-gegevensset

Het wanderbricks schema in de samples catalogus bevat een gegevensset van een gesimuleerd reisboekingsplatform. Het model modeleert een marketplace voor vakantieverhuur, met tabellen met betrekking tot gebruikers en hosts, eigenschappenvermeldingen en bestemmingen, boekingen en betalingen, beoordelingen en ondersteuningslogboeken en clickstream-activiteiten.

Gebruik deze gegevensset om pijplijnen voor data engineering, analysedashboards en machine learning-werkstromen te verkennen zonder uw eigen gegevens te laden.

Toegang tot de gegevensset

De Wanderbricks-gegevensset wordt vooraf geladen in de samples catalogus en is beschikbaar in werkruimten met Unity Catalog.

Alle tabellen in het schema weergeven:

SHOW TABLES IN samples.wanderbricks;

Een voorbeeld van gegevens in een specifieke tabel bekijken:

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

Vervang <table-name> door de tabel die u wilt verkennen, bijvoorbeeld bookings of reviews.

Tabellen

Het wanderbricks schema bevat de volgende tabellen. Voer SHOW TABLES IN samples.wanderbricks uit voor de volledige lijst.

Tabel Beschrijving
users Gebruikersprofielen, waaronder naam, e-mail, land en gebruikerstype.
hosts Hostprofielen die zijn gekoppeld aan vastgoedsvermeldingen, inclusief account- en contactgegevens.
properties Vastgoedvermeldingen met details zoals titel, type, prijs en bestemming.
bookings Boekingsrecords met in- en uitcheckdatums, aantal gasten, totale bedragen en status.
payments Betalingsrecords met methoden, bedrag, status en boekingsreferenties.
booking_updates Registraties van wijzigingsstatus voor data capture in CDC-pijplijnen.
reviews Gebruikersbeoordelingen voor objecten, waaronder beoordelingen, opmerkingen en een is_deleted markering voor zachte verwijderingen.
clickstream Gebruikersactiviteit gebeurtenissen (weergaven, klikken, zoekopdrachten, filters) met geneste metagegevens voor het apparaat en de verwijzer.
page_views Paginaweergavegebeurtenissen die zijn gekoppeld aan gebruikers en eigenschappen.
customer_support_logs Ondersteuningsticketlogboeken met geneste matrices van berichten, inclusief afzender en gevoel.
destinations Bestemmingen met namen en beschrijvingen die worden genoemd in vastgoedvermeldingen.

Primaire tabelrelaties

In het volgende diagram ziet u de verbindingen tussen gebruikers, boekingen, eigenschappen en gerelateerde tabellen.

Diagram met primaire tabelrelaties van Wanderbricks met verbindingen tussen gebruikers, boekingen, eigenschappen en gerelateerde tabellen.

  • Gebruikers en hosts
    • users vertegenwoordigt reizigers en zakelijke klanten.
    • hosts vertegenwoordigt vastgoedeigenaren en beheerders.
  • Eigenschappen en bestemmingen
    • Elke rij in properties is een vermelding die eigendom is van een host.
    • properties verwijst naar destinations om te modelleren waar de vermelding zich bevindt.
  • Boekingen en betalingen
    • bookings verbindt reizigers (user_id) met eigenschappen (property_id).
    • payments en booking_updates verwijzen booking_id om financiĆ«le transacties en statuswijzigingen vast te leggen.
  • Gedrag en ervaring
    • clickstream en page_views houd bij hoe gebruikers door vermeldingen bladeren en ermee werken.
    • reviews registreert feedback na een verblijf van gebruikers en locaties.
    • customer_support_logs records ondersteunen interacties die zijn gekoppeld aan een gebruiker.

Voorbeeldvragen

In de volgende voorbeelden ziet u hoe u een query uitvoert op de Wanderbricks-gegevensset.

Gebruikers, boekingen en eigenschappen koppelen

Retourneer recente reserveringen met gast- en eigenschapsgegevens:

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)

Clickstream-gebeurtenissen per apparaat analyseren

Samenvatten van betrokkenheid per type evenement en apparaat:

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)

Gemiddelde beoordelingen per eigenschap berekenen

Zoek de hoogst beoordeelde eigenschappen met voldoende beoordelingsvolume:

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)