Datová sada Wanderbricks

Schéma wanderbricks v samples katalogu obsahuje simulovanou datovou sadu platformy cestovních rezervací. Modeluje platformu pro pronájem rekreačních objektů s tabulkami zahrnujícími uživatele a hostitele, seznamy rekreačních objektů a destinací, rezervace a platby, recenze a protokoly podpory a aktivity průběhu kliknutí.

Tato datová sada slouží k prozkoumání kanálů přípravy dat, analytických řídicích panelů a pracovních postupů strojového učení bez načítání vlastních dat.

Přístup k datové sadě

Datová sada Wanderbricks je předem načtena v samples katalogu a je k dispozici v pracovních prostorech s podporou katalogu Unity.

Zobrazení seznamu všech tabulek ve schématu:

SQL

SHOW TABLES IN samples.wanderbricks;

Python

display(spark.sql("SHOW TABLES IN samples.wanderbricks"))

Náhled dat v konkrétní tabulce:

SQL

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

Python

display(spark.read.table("samples.wanderbricks.<table-name>").limit(10))

Nahraďte <table-name> tabulkou, kterou chcete prozkoumat, například bookingsreviews.

Tabulky

Schéma wanderbricks obsahuje následující tabulky. Spusťte SHOW TABLES IN samples.wanderbricks pro zobrazení úplného seznamu.

tabulka Description
users Profily uživatelů, včetně jména, e-mailu, země nebo oblasti a typu uživatele.
hosts Profily hostitelů spojené s výpisy nemovitostí, včetně informací o účtu a kontaktních údajů.
properties Nabídky nemovitostí s podrobnostmi, jako jsou název, typ, cena a lokalita.
bookings Záznamy o rezervacích s daty příjezdu/odjezdu, počtem hostů, celkovými částkami a stavem.
payments Záznamy plateb se způsobem platby, částkou, stavem a odkazy na rezervace.
booking_updates Záznamy změn stavu pro kanály zachytávající změny dat (CDC)
reviews Uživatelské recenze položek, včetně hodnocení, komentářů a příznaku is_deleted pro soft smazání.
clickstream Události aktivit uživatelů (zobrazení, kliknutí, vyhledávání, filtry) s vnořenými metadaty pro zařízení a referrer.
page_views Události zobrazení stránky vázané na uživatele a vlastnosti
customer_support_logs Logy podpůrných tiketů s vnořenými poli zpráv, včetně odesílatele a sentimentu
destinations Cílová umístění s názvy a popisy, na které odkazují realitní výpisy.

Primární relace mezi tabulkami

Následující diagram znázorňuje propojení mezi uživateli, rezervacemi, vlastnostmi a souvisejícími tabulkami.

Diagram relací mezi primárními tabulkami Wanderbricks znázorňující propojení mezi uživateli, rezervacemi, vlastnostmi a souvisejícími tabulkami

  • Uživatelé a hostitelé
    • users představuje cestující a obchodní zákazníky.
    • hosts představuje vlastníky a provozovatele nemovitostí.
  • Vlastnosti a cíle
    • Každý řádek v properties je výpis vlastněný hostitelem.
    • properties odkazuje na destinations model, ve kterém se nachází výpis.
  • Rezervace a platby
    • bookings připojí cestovatele (user_id) k vlastnostem (property_id).
    • payments a booking_updates odkazují booking_id na zachycení finančních transakcí a změn stavu.
  • Chování a zkušenosti
    • clickstream a page_views sledujte, jak uživatelé procházejí výpisy a pracují s nimi.
    • reviews zaznamenává zpětnou vazbu uživatelů a nemovitosti po pobytu.
    • customer_support_logs záznamy podporují interakce, které jsou provázané s uživatelem.

Příkladové dotazy

Následující příklady ukazují, jak dotazovat datovou sadu Wanderbricks.

Připojte se k uživatelům, rezervacím a vlastnostem

Vrátit poslední rezervace s podrobnostmi o hostech a ubytováních:

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)

Analýza událostí clickstreamu podle zařízení

Shrnutí zapojení podle typu události a zařízení:

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)

Průměrné hodnocení za nemovitost

Najděte nejlépe hodnocené nemovitosti s dostatečným objemem recenzí.

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)