Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
wanderbricks Skema dalam katalog berisi himpunan samples data platform pemesanan perjalanan yang disimulasikan. Ini memodelkan pasar sewa liburan, dengan tabel yang mencakup pengguna dan penyedia, daftar properti dan tujuan, pemesanan dan transaksi pembayaran, ulasan dan log dukungan, serta aktivitas clickstream.
Gunakan himpunan data ini untuk menjelajahi alur rekayasa data, dasbor analitik, dan alur kerja pembelajaran mesin tanpa memuat data Anda sendiri.
Mengakses himpunan data
Dataset Wanderbricks telah dimuat sebelumnya dalam katalog samples dan tersedia di ruang kerja yang mendukung Unity Catalog.
Untuk mencantumkan semua tabel dalam skema:
SQL
SHOW TABLES IN samples.wanderbricks;
Python
display(spark.sql("SHOW TABLES IN samples.wanderbricks"))
Untuk mempratinjau data dalam tabel tertentu:
SQL
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
Python
display(spark.read.table("samples.wanderbricks.<table-name>").limit(10))
Ganti <table-name> dengan tabel yang ingin Anda jelajahi, misalnya bookings atau reviews.
Tabel
wanderbricks Skema menyertakan tabel berikut. Jalankan SHOW TABLES IN samples.wanderbricks untuk daftar lengkap.
| Tabel | Deskripsi |
|---|---|
users |
Profil pengguna termasuk nama, email, negara atau wilayah, dan jenis pengguna. |
hosts |
Profil host yang ditautkan ke daftar properti, termasuk detail akun dan kontak. |
properties |
Daftar properti dengan detail seperti judul, jenis, harga, dan tujuan. |
bookings |
Catatan pemesanan dengan tanggal check-in/check-out, jumlah tamu, jumlah total, dan status. |
payments |
Catatan pembayaran dengan metode, jumlah, status, dan referensi pemesanan. |
booking_updates |
Rekaman perubahan status pemesanan untuk alur pengambilan data perubahan (CDC). |
reviews |
Ulasan pengguna untuk properti, termasuk peringkat, komentar, dan is_deleted bendera untuk penghapusan sementara. |
clickstream |
Peristiwa aktivitas pengguna (tampilan, klik, pencarian, filter) dengan metadata berlapis untuk perangkat dan perujuk. |
page_views |
Peristiwa tampilan halaman yang terkait dengan pengguna dan properti. |
customer_support_logs |
Mendukung log tiket dengan array pesan berlapis, termasuk pengirim dan sentimen. |
destinations |
Lokasi tujuan yang memiliki nama dan deskripsi, dirujuk dalam daftar properti. |
Hubungan tabel utama
Diagram berikut menunjukkan koneksi antara pengguna, pemesanan, properti, dan tabel terkait.
- Pengguna dan host
-
usersmewakili pelancong dan pelanggan bisnis. -
hostsmewakili pemilik dan operator properti.
-
- Properti dan tujuan
- Setiap baris dalam
propertiesadalah daftar yang dimiliki oleh host. -
propertiesterhubung dengandestinationsuntuk memodelkan lokasi daftar.
- Setiap baris dalam
- Pemesanan dan pembayaran
-
bookingsmenghubungkan wisatawan (user_id) ke properti (property_id). -
paymentsdanbooking_updatesreferensibooking_iduntuk menangkap transaksi keuangan dan perubahan status.
-
- Perilaku dan pengalaman
-
clickstreamdanpage_viewsmelacak cara pengguna menelusuri dan berinteraksi dengan daftar. -
reviewsmenangkap umpan balik setelah menginap dari pengguna dan properti. -
customer_support_logsrekaman mendukung interaksi yang terikat kembali ke pengguna.
-
Contoh pertanyaan
Contoh berikut menunjukkan cara mengkueri himpunan data Wanderbricks.
Bergabung dengan pengguna, pemesanan, dan properti
Kembalikan pemesanan terbaru dengan detail tamu dan properti:
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)
Menganalisis peristiwa clickstream berdasarkan perangkat
Ringkas keterlibatan menurut jenis peristiwa dan perangkat:
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)
Menghitung peringkat rata-rata per properti
Temukan properti dengan peringkat tertinggi dengan volume tinjauan yang cukup:
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)