Instagram
youtube
Facebook
Twitter

Hotel Booking Data Analysis Dashboard

Lesson Overview

In this lesson, students will learn how to analyze hotel booking trends using Power BI by building interactive dashboards from real-world data. The dataset covers three years (2018, 2019, and 2020) and includes key information such as customer demographics, booking behavior, revenue, and cancellations.

Students will explore how to clean, transform, and visualize data effectively, using DAX formulas, slicers, and interactive visuals to uncover insights for hotel business performance.


Learning Objectives

By the end of this lesson, students will be able to:

  • Import and clean real-world hotel booking data.

  • Create custom columns and DAX measures in Power BI.

  • Build dynamic and interactive dashboards for each year.

  • Visualize key metrics such as cancellations, guest count, revenue, and customer types.

  • Apply filters, slicers, and design techniques for better usability.

  • Generate business insights to improve decision-making in the hotel industry.


Dataset Source

We’ll use a publicly available dataset from Kaggle: Hotel Booking Data - Kaggle

Download the Excel file. The dataset contains three sheets for the years 2018, 2019, and 2020.


Step 1: Understand the Dataset

Each sheet contains detailed booking records. Below are the important original columns:

Column Name

Description

arrival_date_year

Year of booking

arrival_date_month

Month of arrival

stays_in_weekend_nights

Nights stayed over weekends

stays_in_week_nights

Nights stayed over weekdays

adults, children, babies

Number of guests by type

adr

Average daily rate (room revenue)

is_canceled

1 = canceled, 0 = not canceled

customer_type

Guest classification (e.g., Transient, Group)

distribution_channel

Booking channel (e.g., Direct, TA/TO)

 


Step 2: Create Custom Columns in Power BI

To make the data more insightful, we’ll add custom columns using Power BI's Power Query and DAX features:

Custom Column/Measure

Formula/Logic

Total Night

stays_in_weekend_nights + stays_in_week_nights

Revenue

adr × Total Night

Person

adults + children + babies

MonthNum

Use number mapping for month names (e.g., Jan = 1)

Cancellation Status

If is_canceled = 1, then "Yes", else "No"

MealCost

Use LOOKUPVALUE() from an external meal pricing table

 


Step 3: Dashboard Design Structure

We will create three dashboards, one for each year (2018, 2019, and 2020), to allow both individual analysis and year-over-year comparison.

Section-wise Visuals

1. Cards

  • Total Guest Count (sum of adults + children + babies)

  • Hotel Type Filter

  • Month Selection Indicator

2. Donut Chart

  • Cancellation Status (Yes vs. No)

3. Column & Bar Charts

  • Monthly Guest Count by arrival_date_month

  • Booking Channel Performance using distribution_channel

4. Line Chart

  • Average Lead Time by Month — shows guest booking behavior trends

5. Pie Charts

  • Monthly Revenue Contribution

  • Customer Type Breakdown

6. Slicers

  • Interactive filters for:

    • Hotel Type

    • Arrival Month

    • Market Segment


Step 4: DAX Measures (Examples)

Total Nights = [stays_in_weekend_nights] + [stays_in_week_nights]

Revenue = [adr] * [Total Nights]

Person = [adults] + [children] + [babies]

Cancellation Status = IF([is_canceled] = 1, "Yes", "No")

Hands-On Project: Dashboard Walkthrough

Here are snapshots of the dashboards created for each year:

📌 2018 Dashboard

📌 2019 Dashboard

📌 2020 Dashboard

Each dashboard includes consistent layout and slicer placement to enable smooth year-wise comparison.


Insights & Conclusion

Through visual analysis, students can uncover:

  • Peak guest months and seasonal demand

  • Top-performing booking channels like TA/TO or Direct

  • Revenue contribution by different customer types

  • Cancellation patterns, helping identify unreliable sources

  • Guest behavior trends across years

These insights help in revenue optimization, targeted marketing, and operational planning for hotels.