Wanderbricks veri kümesi

Katalogdaki wanderbrickssamples şema, sanal bir seyahat rezervasyon platformu veri kümesi içerir. Kullanıcıları ve ev sahiplerini, tesis listelerini ve varış noktalarını, rezervasyonları ve ödemeleri, incelemeleri ve destek günlüklerini ve tıklama akışı etkinliğini kapsayan tabloları içeren bir tatil kiralama marketi modellemektedir.

Kendi verilerinizi yüklemeden veri mühendisliği işlem hatlarını, analiz panolarını ve makine öğrenmesi iş akışlarını keşfetmek için bu veri kümesini kullanın.

Veri kümesine erişme

Wanderbricks veri kümesi kataloğa önceden yüklenmiştir samples ve Unity Kataloğu etkin çalışma alanlarında kullanılabilir.

Şemadaki tüm tabloları listelemek için:

SQL

SHOW TABLES IN samples.wanderbricks;

Python

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

Belirli bir tablodaki verilerin önizlemesini görüntülemek için:

SQL

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

Python

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

Keşfetmek istediğiniz tabloyla, örneğin <table-name> veya bookings, yerine reviews değiştirin.

Tables

Şema wanderbricks aşağıdaki tabloları içerir. Tam liste için komutunu çalıştırın SHOW TABLES IN samples.wanderbricks .

Tabela Açıklama
users Ad, e-posta, ülke veya bölge ve kullanıcı türü gibi kullanıcı profilleri.
hosts Hesap ve iletişim ayrıntıları dahil, mülk listelerine bağlı ev sahibi profilleri.
properties Başlık, tür, fiyat ve konum gibi ayrıntıları içeren gayrimenkul listeleri.
bookings Check-in/check-out tarihleri, konuk sayısı, toplam tutarlar ve durum ile rezervasyon kayıtları.
payments Yöntem, tutar, durum ve rezervasyon başvurularıyla ödeme kayıtları.
booking_updates Rezervasyon durum değişikliği kayıtları için değişiklik veri yakalama (CDC) işlem hatları.
reviews Özellikler için kullanıcı incelemeleri, derecelendirmeler, yorumlar ve is_deleted yumuşak silme bayrakları dahil.
clickstream Kullanıcı etkinliği olayları (görünümler, tıklamalar, aramalar, filtreler), cihaz ve kaynaklara ait iç içe meta verilerle birlikte.
page_views Kullanıcılara ve özelliklere bağlı sayfa görünümü olayları.
customer_support_logs Gönderen ve duyguyu içeren iç içe geçmiş mesaj dizileri ile destek bileti günlükleri.
destinations Mülk listelerinin referans verdiği, adları ve açıklamaları olan hedef konumlar.

Birincil tablo ilişkileri

Aşağıdaki diyagramda kullanıcılar, rezervasyonlar, özellikler ve ilgili tablolar arasındaki bağlantılar gösterilmektedir.

Kullanıcılar, rezervasyonlar, özellikler ve ilgili tablolar arasındaki bağlantıları gösteren Wanderbricks birincil tablo ilişkileri diyagramı.

  • Kullanıcılar ve konaklar
    • users seyahat edenleri ve iş müşterilerini temsil eder.
    • hosts taşınmaz sahiplerini ve işleticilerini temsil eder.
  • Özellikler ve hedefler
    • properties içindeki her satır bir ev sahibine ait bir listeliktir.
    • properties destinations listelemenin bulunduğu modele bağlantılar.
  • Rezervasyonlar ve ödemeler
    • bookings gezginleri (user_id) özelliklere (property_id) bağlar.
    • payments ve booking_updates, finansal işlemleri ve durum değişikliklerini yakalamak amacıyla booking_id'ye atıfta bulunur.
  • Davranış ve deneyim
    • clickstream ve page_views kullanıcıların listelemelere nasıl göz atıp bu listelerle etkileşime geçtiğini izleyin.
    • reviews kullanıcıdan ve tesisten konaklama sonrası geri bildirim yakalar.
    • customer_support_logs kayıtları, bir kullanıcıya bağlı etkileşimleri destekler.

Örnek sorgular

Aşağıdaki örneklerde Wanderbricks veri kümesini sorgulama gösterilmektedir.

Kullanıcılara, rezervasyonlara ve tesislere katılma

Konuk ve tesis ayrıntılarıyla son rezervasyonları iade edin:

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)

Cihaza göre tıklama akışı olaylarını analiz etme

Olay türüne ve cihaza göre etkileşimi özetleyin:

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)

Özellik başına ortalama derecelendirmeleri hesapla

Yeterli inceleme hacmine sahip en yüksek dereceli özellikleri bulun:

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)