Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Схема wanderbricks в каталоге samples содержит имитированный набор данных платформы бронирования путешествий. Он моделирует рынок аренды для отдыха, с таблицами, охватывающими пользователей и хозяев, списки недвижимости и направления, бронирование и платежи, отзывы и журналы поддержки, а также активность кликабельных действий.
Используйте этот набор данных для изучения конвейеров проектирования данных, панелей мониторинга аналитики и рабочих процессов машинного обучения без загрузки собственных данных.
Доступ к набору данных
Набор данных Wanderbricks предварительно загружен в samples каталоге и доступен в рабочих областях с поддержкой каталога Unity.
Чтобы перечислить все таблицы в схеме:
SQL
SHOW TABLES IN samples.wanderbricks;
Python
display(spark.sql("SHOW TABLES IN samples.wanderbricks"))
Чтобы просмотреть данные в определенной таблице, выполните указанные ниже действия.
SQL
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
Python
display(spark.read.table("samples.wanderbricks.<table-name>").limit(10))
Замените <table-name> на таблицу, которую вы хотите изучить, например, bookings или reviews.
Таблицы
Схема wanderbricks содержит следующие таблицы. Запустите SHOW TABLES IN samples.wanderbricks для полного списка.
| таблица | Описание |
|---|---|
users |
Профили пользователей, включая имя, электронную почту, страну или регион и тип пользователя. |
hosts |
Профили хостов, связанные с объявлениями о недвижимости, включая учетные записи и контактные данные. |
properties |
Объявления о недвижимости с такими сведениями, как название, тип, цена и расположение. |
bookings |
Записи о бронировании с датами заезда и выезда, количеством гостей, общими суммами и статусами. |
payments |
Записи оплаты с методами оплаты, соответствующими суммами, статусы и референции бронирования. |
booking_updates |
Записи об изменении состояния бронирования для каналов захвата измененных данных (CDC). |
reviews |
Отзывы пользователей о свойствах, включая оценки, комментарии и is_deleted флаг для обратимого удаления. |
clickstream |
События активности пользователей (представления, щелчки, поиск, фильтры) с вложенными метаданными для устройства и ссылки. |
page_views |
События представления страниц, связанные с пользователями и свойствами. |
customer_support_logs |
Журналы заявок в службу поддержки со встроенными массивами сообщений, включая отправителя и эмоциональный настрой. |
destinations |
Места назначения с именами и описаниями, на которые ссылается список объектов недвижимости. |
Связи основной таблицы
На следующей схеме показаны подключения между пользователями, резервированиями, свойствами и связанными таблицами.
- Пользователи и хосты
-
usersпредставляет путешественников и бизнес-клиентов. -
hostsпредставляет владельцев и операторов недвижимости.
-
- Свойства и назначения
- Каждая строка в
properties— это объявление, принадлежащее владельцу. -
propertiesсвязано сdestinations, чтобы моделировать, где находится список.
- Каждая строка в
- Бронирование и платежи
-
bookingsподключает путешественников (user_id) к объектам размещения (property_id). -
paymentsиbooking_updatesссылаются наbooking_idдля фиксации финансовых транзакций и изменений статуса.
-
- Поведение и опыт
-
clickstreamиpage_viewsотслеживайте, как пользователи просматривают и взаимодействуют с списками. -
reviewsзаписывает отзывы пользователей и объектов размещения после пребывания. -
customer_support_logsзаписи поддерживают взаимодействие, связанное с пользователем.
-
Примеры запросов
В следующих примерах показано, как запросить набор данных Wanderbricks.
Присоединение пользователей, бронирования и объектов
Возврат последних резервирований с сведениями о гостях и собственности:
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)
Анализ событий кликстрим по устройству
Суммирование взаимодействия по типу события и устройству:
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)
Вычисление средних оценок для каждого объекта
Найдите объекты с высокой оценкой и достаточным количеством отзывов.
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)