Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El wanderbricks esquema del samples catálogo contiene un conjunto de datos simulado de la plataforma de reserva de viajes. Modela un marketplace de alquileres vacacionales, con tablas que abarcan usuarios y hosts, listados de propiedades y destinos, reservas y pagos, revisiones y registros de soporte técnico, y actividad de flujo de clics.
Use este conjunto de datos para explorar canalizaciones de ingeniería de datos, paneles de análisis y flujos de trabajo de aprendizaje automático sin cargar sus propios datos.
Acceso al conjunto de datos
El conjunto de datos de Wanderbricks está precargado en el samples catálogo y está disponible en espacios de trabajo habilitados para el catálogo de Unity.
Para enumerar todas las tablas del esquema:
SHOW TABLES IN samples.wanderbricks;
Para obtener una vista previa de los datos de una tabla específica:
SELECT *
FROM samples.wanderbricks.<table-name>
LIMIT 10;
Reemplace por <table-name> la tabla que desea explorar, por ejemplo bookings o reviews.
Tables
El wanderbricks esquema incluye las tablas siguientes. Ejecute SHOW TABLES IN samples.wanderbricks para obtener la lista completa.
| Tabla | Descripción |
|---|---|
users |
Perfiles de usuario, incluidos el nombre, el correo electrónico, el país y el tipo de usuario. |
hosts |
Perfiles de anfitrión vinculados a listados de propiedades, incluidos detalles de cuenta y contacto. |
properties |
Listados de propiedades con detalles como título, tipo, precio y destino. |
bookings |
Registros de reserva con fechas de registro de entrada y salida, recuentos de huéspedes, importes totales y estado. |
payments |
Registros de pago con referencias de método, importe, estado y reserva. |
booking_updates |
Registros de cambios de estado de reserva para canalizaciones de captura de datos modificados (CDC). |
reviews |
Las opiniones de los usuarios sobre propiedades, incluidas las clasificaciones, los comentarios y una is_deleted marca para las eliminaciones temporales. |
clickstream |
Eventos de actividad de usuario (vistas, clics, búsquedas, filtros) con metadatos anidados para el dispositivo y el remitente. |
page_views |
Eventos de vista de página vinculados a usuarios y propiedades. |
customer_support_logs |
Registros de incidencias de soporte técnico con matrices anidadas de mensajes, incluidos remitentes y opiniones. |
destinations |
Ubicaciones de destino con nombres y descripciones, a las que hacen referencia los listados de propiedades. |
Relaciones de tabla principal
En el diagrama siguiente se muestran las conexiones entre usuarios, reservas, propiedades y tablas relacionadas.
- Usuarios y anfitriones
-
usersrepresenta a los viajeros y clientes empresariales. -
hostsrepresenta los propietarios y operadores de propiedades.
-
- Propiedades y destinos
- Cada fila de
propertieses una lista propiedad de un host. -
propertiesenlaza condestinationspara modelar dónde se ubica el listado.
- Cada fila de
- Reservas y pagos
-
bookingsconecta a los viajeros (user_id) a las propiedades (property_id). -
paymentsybooking_updatesreferencian abooking_idpara capturar transacciones financieras y cambios de estado.
-
- Comportamiento y experiencia
-
clickstreamypage_viewsrealizar un seguimiento de cómo los usuarios examinan e interactúan con los anuncios. -
reviewscaptura los comentarios posteriores a la estancia por usuario y propiedad. -
customer_support_logslos registros soportan interacciones vinculadas a un usuario.
-
Consultas de ejemplo
En los ejemplos siguientes se muestra cómo consultar el conjunto de datos de Wanderbricks.
Unirse a usuarios, reservas y propiedades
Devuelve las reservas recientes con los detalles del alojamiento y los huéspedes:
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)
Análisis de eventos de secuencia de clics por dispositivo
Resumir la interacción por tipo de evento y dispositivo:
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)
Calcular valoraciones medias por propiedad
Encuentre las propiedades con la clasificación más alta con suficiente volumen de revisión:
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)