Compartir a través de


Conjunto de datos de Wanderbricks

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.

Diagrama de relaciones de tabla principal de Wanderbricks que muestra las conexiones entre usuarios, reservas, propiedades y tablas relacionadas.

  • Usuarios y anfitriones
    • users representa a los viajeros y clientes empresariales.
    • hosts representa los propietarios y operadores de propiedades.
  • Propiedades y destinos
    • Cada fila de properties es una lista propiedad de un host.
    • properties enlaza con destinations para modelar dónde se ubica el listado.
  • Reservas y pagos
    • bookings conecta a los viajeros (user_id) a las propiedades (property_id).
    • payments y booking_updates referencian a booking_id para capturar transacciones financieras y cambios de estado.
  • Comportamiento y experiencia
    • clickstream y page_views realizar un seguimiento de cómo los usuarios examinan e interactúan con los anuncios.
    • reviews captura los comentarios posteriores a la estancia por usuario y propiedad.
    • customer_support_logs los 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)