Bali Hotel Occupancy, Rate and Profitability Analytics Set (ID)
Overview
This synthetic Bali hotel analytics product connects a balanced portfolio of modelled three-star, four-star and five-star properties with room inventory, facilities, transparent property media, a dated holiday and event calendar, daily operating performance, monthly room rates, guest source markets, booking channels, airfare and aviation-fuel pressure, operating-cost indices, departmental revenue and expense, and annual profitability. Historical patterns are calibrated to published Bali tourism and hotel-market context without reproducing any hotel record. The current year separates synthetic estimates from forward forecast months, while pandemic closure and reopening periods remain explicit so occupancy, rate, cost and profit models can be evaluated without look-ahead leakage.
Analytics
Four entries from the packaged tables, with the performance the dataset records for them. Every value below is read from the shipped files.

Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| bali_hotels | 18 |
| bali_hotel_years | 12 |
| bali_hotel_periods | 144 |
| bali_hotel_media | 18 |
| bali_hotel_room_types | 72 |
| bali_hotel_facilities | 288 |
| bali_hotel_source_markets | 16 |
| bali_hotel_booking_channels | 6 |
| bali_hotel_holidays_events | 139 |
| bali_hotel_cost_indices | 144 |
| bali_hotel_market_access | 2,304 |
| bali_hotel_daily_performance | 78,894 |
| bali_hotel_monthly_performance | 2,592 |
| bali_hotel_monthly_source_mix | 41,472 |
| bali_hotel_room_rates | 10,368 |
| bali_hotel_channel_mix | 15,552 |
| bali_hotel_monthly_financials | 2,592 |
| bali_hotel_annual_profitability | 216 |
| bali_hotel_capital_projects | 36 |
| bali_hotel_reservations | 465,386 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotels. |
| hotel_name | varchar(32) | Bali hotel name created for this synthetic dataset. |
| brand_family | varchar(24) | Modelled commercial family under which the property is positioned. |
| star_rating | integer | Modeled hotel classification of three, four or five stars. |
| property_type | varchar(32) | Operating format such as hotel, resort, retreat, suites or villas. |
| target_segment | varchar(40) | Primary guest and trip-purpose segment targeted by the property. |
| architecture_style | varchar(40) | Synthetic design brief used for the property character and media illustration. |
+17 more columns in bali_hotels. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| year_id | varchar(8) | Stable identifier for year; use it for the joins declared for bali_hotel_years. |
| calendar_year | integer | Four-digit calendar year represented by the row. |
| period_start | date | First ISO 8601 date in the annual reporting period. |
| period_end | date | Last ISO 8601 date in the annual reporting period. |
| source_status | varchar(40) | Evidence status: observed, estimated or forecast according to the dataset methodology. |
| vintage_date | date | Date on which the research inputs and modeled values were frozen. |
| Column | Type | Description |
|---|---|---|
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_periods. |
| year_id | varchar(8) | Stable identifier for year; use it for the joins declared for bali_hotel_periods. |
| calendar_year | integer | Four-digit calendar year represented by the row. |
| month_number | varchar(8) | Calendar month number from 1 for January through 12 for December. |
| month_name | varchar(16) | English calendar month name. |
| month_start | date | First ISO 8601 date in the monthly period. |
| month_end | date | Last ISO 8601 date in the monthly period. |
+6 more columns in bali_hotel_periods. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| hotel_media_id | varchar(16) | Stable identifier for hotel media; use it for the joins declared for bali_hotel_media. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_media. |
| image_file | varchar(32) | Dataset-relative path to the hotel illustration. |
| image_format | varchar(16) | Media file format stored for the hotel illustration. |
| image_width_px | integer | Illustration canvas width in pixels. |
| image_height_px | integer | Illustration canvas height in pixels. |
| property_view | varchar(48) | Camera angle and property presentation used by the illustration. |
+3 more columns in bali_hotel_media. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| room_type_id | varchar(16) | Stable identifier for room type; use it for the joins declared for bali_hotel_room_types. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_room_types. |
| room_type_name | varchar(32) | Synthetic marketed name of the room or villa category. |
| room_class | varchar(16) | Commercial inventory tier used in availability and pricing analysis. |
| view_type | varchar(24) | Primary guest-room outlook, such as garden, pool, ocean or city. |
| room_count | integer | Number of physical keys assigned to this room type. |
| floor_area_sqm | integer | Typical room floor area in square metres. |
+8 more columns in bali_hotel_room_types. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| facility_id | varchar(16) | Stable identifier for facility; use it for the joins declared for bali_hotel_facilities. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_facilities. |
| facility_category | varchar(24) | Functional grouping for the hotel facility. |
| facility_name | varchar(32) | Modelled guest-facing or operational facility name. |
| unit_type | varchar(16) | Unit in which facility capacity is recorded. |
| unit_count_or_capacity | integer | Modeled count or guest capacity expressed in unit_type. |
| complimentary_flag | boolean | True when normal guest access is included without a separate facility charge. |
+5 more columns in bali_hotel_facilities. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| source_market_id | varchar(8) | Stable identifier for source market; use it for the joins declared for bali_hotel_source_markets. |
| country_code | varchar(8) | Stable code for country. |
| country_name | varchar(40) | Human-readable country name. |
| market_group | varchar(24) | Demand segment grouping for an origin country or aggregate source market. |
| world_region | varchar(24) | Broad geographic region assigned to the source market. |
| representative_distance_to_bali_km | integer | Representative great-circle travel distance to Bali in kilometres. |
| baseline_roundtrip_airfare_usd_2015 | integer | Modeled 2015 economy round-trip airfare baseline in United States dollars. |
+6 more columns in bali_hotel_source_markets. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| booking_channel_id | varchar(8) | Stable identifier for booking channel; use it for the joins declared for bali_hotel_booking_channels. |
| channel_code | varchar(16) | Stable code for channel. |
| channel_name | varchar(40) | Human-readable channel name. |
| channel_group | varchar(16) | Commercial distribution family such as direct, online travel agency or contracted account. |
| standard_commission_pct | numeric(6,2) | Typical commission or acquisition cost applied to bookings from the channel. |
| active_flag | boolean | Boolean indicator for active. |
| Column | Type | Description |
|---|---|---|
| holiday_event_id | varchar(16) | Stable identifier for holiday event; use it for the joins declared for bali_hotel_holidays_events. |
| event_name | varchar(56) | Holiday or demand event name used in the Bali seasonality model. |
| event_category | varchar(40) | Holiday, school-break, festival or year-end event grouping. |
| start_date | date | First ISO 8601 date on which the event affects demand. |
| end_date | date | Last ISO 8601 date on which the event affects demand. |
| primary_origin_market_code | varchar(8) | Country or aggregate market code most directly associated with the event. |
| demand_multiplier | numeric(6,3) | Multiplicative demand effect applied during the event window. |
+4 more columns in bali_hotel_holidays_events. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| cost_index_id | varchar(16) | Stable identifier for cost index; use it for the joins declared for bali_hotel_cost_indices. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_cost_indices. |
| cpi_cola_index_2015_100 | numeric(8,3) | Consumer-price and cost-of-living adjustment index with 2015 equal to 100. |
| wage_cost_index_2015_100 | numeric(8,3) | Hotel labor-cost index with 2015 equal to 100. |
| food_cost_index_2015_100 | numeric(8,3) | Food and beverage input-cost index with 2015 equal to 100. |
| energy_cost_index_2015_100 | numeric(8,3) | Hotel utilities and energy-cost index with 2015 equal to 100. |
| jet_fuel_usd_per_gallon | numeric(6,3) | Representative aviation jet-fuel price in United States dollars per gallon. |
+8 more columns in bali_hotel_cost_indices. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| market_access_id | varchar(16) | Stable identifier for market access; use it for the joins declared for bali_hotel_market_access. |
| source_market_id | varchar(8) | Stable identifier for source market; use it for the joins declared for bali_hotel_market_access. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_market_access. |
| average_roundtrip_airfare_usd | numeric(8,2) | Modeled average economy round-trip fare to Bali in United States dollars. |
| estimated_fuel_surcharge_usd | numeric(7,2) | Estimated fuel-surcharge component of the round-trip airfare in United States dollars. |
| airfare_increase_due_to_fuel_usd | numeric(7,2) | Estimated airfare increase attributable to jet-fuel movement versus the 2015 baseline. |
| jet_fuel_usd_per_gallon | numeric(6,3) | Representative aviation jet-fuel price in United States dollars per gallon. |
+7 more columns in bali_hotel_market_access. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| daily_performance_id | varchar(24) | Stable identifier for daily performance; use it for the joins declared for bali_hotel_daily_performance. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_daily_performance. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_daily_performance. |
| stay_date | date | Guest-night operating date in ISO 8601 format. |
| day_of_week | varchar(16) | English weekday for stay_date. |
| operating_state | varchar(24) | Hotel operating condition, including normal, constrained or closed states. |
| primary_holiday_event_id | varchar(16) | Holiday event with the strongest modeled demand effect on the stay date; empty when none applies. |
+22 more columns in bali_hotel_daily_performance. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| monthly_performance_id | varchar(16) | Stable identifier for monthly performance; use it for the joins declared for bali_hotel_monthly_performance. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_monthly_performance. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_monthly_performance. |
| operating_days | integer | Number of calendar days the property was modeled as operating during the month. |
| rooms_inventory | integer | Physical rooms held by the property on the observation date or month. |
| available_room_nights | integer | Sum of sellable rooms across all operating dates in the period. |
| sold_room_nights | integer | Sum of occupied room nights sold in the period. |
+16 more columns in bali_hotel_monthly_performance. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| source_mix_id | varchar(24) | Stable identifier for source mix; use it for the joins declared for bali_hotel_monthly_source_mix. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_monthly_source_mix. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_monthly_source_mix. |
| source_market_id | varchar(8) | Stable identifier for source market; use it for the joins declared for bali_hotel_monthly_source_mix. |
| room_nights | integer | Occupied room nights allocated to the source market. |
| estimated_guest_arrivals | integer | Estimated arriving guests derived from room nights and length of stay. |
| average_length_of_stay_nights | numeric(6,2) | Modeled average occupied nights per arriving guest from the source market. |
+9 more columns in bali_hotel_monthly_source_mix. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| room_rate_id | varchar(24) | Stable identifier for room rate; use it for the joins declared for bali_hotel_room_rates. |
| room_type_id | varchar(16) | Stable identifier for room type; use it for the joins declared for bali_hotel_room_rates. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_room_rates. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_room_rates. |
| cpi_cola_index_2015_100 | numeric(8,3) | Consumer-price and cost-of-living adjustment index with 2015 equal to 100. |
| avtur_cost_index_2015_100 | numeric(8,3) | Aviation turbine fuel price index with 2015 equal to 100. |
| holiday_rate_multiplier | numeric(6,3) | Multiplicative room-rate premium or discount associated with event demand. |
+9 more columns in bali_hotel_room_rates. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| channel_mix_id | varchar(24) | Stable identifier for channel mix; use it for the joins declared for bali_hotel_channel_mix. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_channel_mix. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_channel_mix. |
| booking_channel_id | varchar(8) | Stable identifier for booking channel; use it for the joins declared for bali_hotel_channel_mix. |
| sold_room_nights | integer | Sum of occupied room nights sold in the period. |
| room_night_share_pct | numeric(7,3) | Source-market or booking-channel room nights as a percentage of the hotel monthly total. |
| gross_room_revenue_idr | bigint | Room revenue before distribution commission in Indonesian rupiah. |
+6 more columns in bali_hotel_channel_mix. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| monthly_financial_id | varchar(16) | Stable identifier for monthly financial; use it for the joins declared for bali_hotel_monthly_financials. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_monthly_financials. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_monthly_financials. |
| room_revenue_idr | bigint | Guest-room revenue in Indonesian rupiah. |
| food_beverage_revenue_idr | bigint | Food and beverage revenue in Indonesian rupiah. |
| other_revenue_idr | bigint | Spa, transport, activity and other hotel revenue in Indonesian rupiah. |
| total_revenue_idr | bigint | Total hotel revenue in Indonesian rupiah across room, food and beverage, and other departments. |
+25 more columns in bali_hotel_monthly_financials. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| annual_profitability_id | varchar(16) | Stable identifier for annual profitability; use it for the joins declared for bali_hotel_annual_profitability. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_annual_profitability. |
| year_id | varchar(8) | Stable identifier for year; use it for the joins declared for bali_hotel_annual_profitability. |
| available_room_nights | integer | Sum of sellable rooms across all operating dates in the period. |
| sold_room_nights | integer | Sum of occupied room nights sold in the period. |
| occupancy_pct | numeric(6,2) | Rooms sold divided by rooms available, expressed as a percentage. |
| adr_idr | integer | Average daily room rate in Indonesian rupiah, calculated from room revenue and sold room nights. |
+13 more columns in bali_hotel_annual_profitability. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| capital_project_id | varchar(16) | Stable identifier for capital project; use it for the joins declared for bali_hotel_capital_projects. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_capital_projects. |
| project_type | varchar(24) | Capital-investment category such as renovation, efficiency or facility enhancement. |
| project_name | varchar(64) | Modelled property capital-project name. |
| approved_date | date | Synthetic ISO 8601 date on which project funding was approved. |
| project_start_date | date | Synthetic ISO 8601 date on which project work began. |
| planned_completion_date | date | Synthetic ISO 8601 date targeted for project completion. |
+7 more columns in bali_hotel_capital_projects. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| reservation_id | varchar(16) | Stable identifier for reservation; use it for the joins declared for bali_hotel_reservations. |
| hotel_id | varchar(16) | Stable identifier for hotel; use it for the joins declared for bali_hotel_reservations. |
| room_type_id | varchar(16) | Stable identifier for room type; use it for the joins declared for bali_hotel_reservations. |
| booking_channel_id | varchar(8) | Stable identifier for booking channel; use it for the joins declared for bali_hotel_reservations. |
| source_market_id | varchar(8) | Stable identifier for source market; use it for the joins declared for bali_hotel_reservations. |
| period_id | varchar(16) | Stable identifier for period; use it for the joins declared for bali_hotel_reservations. |
| booking_date | date | booking date as an ISO 8601 calendar date. |
+12 more columns in bali_hotel_reservations. The full schema ships with the download.
Sample Data
A snapshot of real rows from the dataset (values are fully synthetic).
| hotel_id | hotel_name | star_rating | property_type | area_name | regency_name | total_rooms | target_segment | architecture_style | beach_access | ownership_model |
|---|---|---|---|---|---|---|---|---|---|---|
| HTL0001 | Sagara Lane Hotel | 3 | urban beach hotel | Kuta | Badung | 96 | value leisure | compact contemporary tropical | walkable | independent |
| HTL0002 | Purnama Courtyard Inn | 3 | courtyard hotel | Legian | Badung | 84 | families and groups | terracotta Balinese courtyard | walkable | independent |
| HTL0003 | Nusa Pagi Hotel | 3 | garden hotel | Sanur | Denpasar | 72 | mature leisure | low-rise garden pavilion | nearby | family-owned |
Version History
| v1.2.0 | 2026-08-17 | Gives the eighteen properties web addresses that read like a hotel's. They were the hotel name lowercased, stripped of spaces and punctuation, cut at twenty four characters and finished with the reserved .example suffix, which produced theayunawritersretr.example and announced the column as filler in every row. Each address is now built from whole words with the trade word dropped where something distinctive survives, so Sagara Lane Hotel is sagaralane.com, and the suffix follows what Bali properties actually hold: mostly .com, a real minority on .co.id. No other column changes, and the occupancy, rate, revenue and profitability figures are identical to 1.1.0. |