Skip to main content

Documentation Index

Fetch the complete documentation index at: https://revrebel-sync-metrics-library.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Demand Table Models

Demand data has its own table family because it does not behave like PMS actuals, RMS pace, pickup, manual planning, event, or price-shop data. It is a market signal layer. It tells us how the hotel is positioned against the market, not just what the hotel produced. The demand model supports market demand analysis, occupancy index review, ADR and RevPAR rank tracking, comp-set benchmarking, market-excluding-property comparisons, and demand variance analysis.

How We View Demand Data

We intentionally separate demand data from pace and actual performance datasets because demand behaves differently — and forcing it into operational fact tables creates more confusion than clarity. Demand data is observational by nature. It includes market and compset intelligence, occupancy indexing, ADR and RevPAR rankings, prior-period comparisons, and market-level performance metrics that don’t always reconcile directly to PMS revenue or room-night production. It also captures snapshot-based competitive positioning data that reflects market movement at a specific point in time. By structuring demand as its own dataset, we preserve the integrity of operational reporting while creating a cleaner framework for forecasting, benchmarking, and strategic analysis. It allows us to evaluate not just how the hotel performed — but how the market behaved around it.

Demand Table Family

Demand is stored in three standardized snapshot tables:
snap_demand_property
snap_demand_segment
snap_demand_source
The source report often named Demand Channel maps to snap_demand_source. In the REVREBEL model, source represents the distribution-oriented view of demand, while channel remains available as a standardized grouping when the data supports it.

Naming Standard Notes

Demand tables follow the same column naming standards as the rest of the Metrics Library.
Source PatternStandard PatternUsage
snapshot_datesnap_datePoint-in-time date when the demand observation was captured.
stay_date or source datestay_dateHotel stay / occupancy / service date.
room_nightsrmsRoom nights or rooms sold.
compsetcsCompetitive set. Short, readable, and mercifully not thirty characters long.
prior_yearlyPrior-year comparison.
prior_weeklwPrior-week comparison.
chgchgAbsolute change / variance.
pct_chgpct_chgPercent change.
market_exclmarket_exclMarket excluding the subject property.
booking_sourcesourceSource-oriented distribution cut.
etl_dateetl_dateTechnical ETL timestamp when it needs to be preserved from the source.

Table List

TablePurpose
snap_demand_propertyProperty-level demand, market, compset, index, and rank metrics.
snap_demand_segmentSegment-level demand, market, compset, index, rank, and variance metrics.
snap_demand_sourceSource/channel-level demand, market, compset, index, rank, and variance metrics.

snap_demand_property

Grain

The property demand table is keyed at:
property_code + snap_date + stay_date + market_segment + segment
When the source data is truly property-wide and market_segment or segment are null, total, or not supplied, the effective grain becomes:
property_code + snap_date + stay_date

Standardized Columns

Source FieldStandard FieldTypeNotes
market_segmentmarket_segmentSTRINGMarket segment from the demand source.
segmentsegmentSTRINGStandard or source segment value, depending on mapping maturity.
monthmonthDATEMonth value normalized to the first day of month.
stay_date, datestay_dateDATEStay date for the demand observation.
compset_rooms_soldcs_rms_soldFLOAT64Competitive-set rooms sold.
occ_indexocc_indexFLOAT64Property occupancy index versus compset or market.
occ_rankocc_rankSTRINGOccupancy rank. Cast in views if the source is consistently numeric.
property_adradrFLOAT64Property ADR.
compset_adrcs_adrFLOAT64Competitive-set ADR.
adr_rankadr_rankSTRINGADR rank. Cast in views if the source is consistently numeric.
revpar_rankrevpar_rankSTRINGRevPAR rank. Cast in views if the source is consistently numeric.
property_occ_yoyocc_yoyFLOAT64Property occupancy year-over-year value or change as provided by source.
compset_occ_yoycs_occ_yoyFLOAT64Competitive-set occupancy year-over-year value or change as provided by source.
occ_index_yoyocc_index_yoyFLOAT64Occupancy index year-over-year value or change.
property_adr_yoyadr_yoyFLOAT64Property ADR year-over-year value or change.
compset_adr_yoycs_adr_yoyFLOAT64Competitive-set ADR year-over-year value or change.
snapshot_datesnap_dateDATEDemand snapshot date.
property_codeproperty_codeSTRINGProperty code.
etl_dateetl_dateTIMESTAMPTechnical ETL timestamp from the source process.

Metadata Columns

ColumnTypeNotes
source_systemSTRINGSource system or provider.
source_reportSTRINGSource report or feed name.
source_fileSTRINGSource file path or name.
insert_dateDATEInsert date.
updated_dateDATEUpdated date.

snap_demand_segment

Grain

The segment demand table is keyed at:
property_code + snap_date + stay_date + market_segment + segment_detail
segment_detail preserves the source detail field. Where mapping exists, it resolves into the standard segment model using segment, segment_code, and related segment attributes.

Standardized Columns

Source FieldStandard FieldTypeNotes
monthmonthDATEMonth value normalized to the first day of month.
date, stay_datestay_dateDATEDemand observation date / stay date.
occoccFLOAT64Property occupancy.
compset_occcs_occFLOAT64Competitive-set occupancy.
occ_indexocc_indexFLOAT64Property occupancy index versus compset or market.
occ_rankocc_rankSTRINGOccupancy rank. Cast in views if the source is consistently numeric.
occ_index_vs_prior_year_pctocc_index_pct_chg_lyFLOAT64Occupancy index percent change versus prior year.
occ_index_chg_vs_prior_week_pctocc_index_pct_chg_lwFLOAT64Occupancy index percent change versus prior week.
room_nights_current_my_hotel_totalsrmsINT64Current property room nights / rooms sold.
room_nights_chg_from_last_wk_my_hotel_totalsrms_chg_lwINT64Property room nights change versus last week.
room_nights_var_pct_to_last_yr_my_hotel_totalsrms_pct_chg_lyFLOAT64Property room nights percent variance versus last year.
room_nights_var_pct_to_last_yr_market_excl_totalsmarket_excl_rms_pct_chg_lyFLOAT64Market-excluding-property room nights percent variance versus last year.
room_nights_chg_pct_from_last_wk_my_hotel_totalsrms_pct_chg_lwFLOAT64Property room nights percent change versus last week.
room_nights_chg_pct_from_last_wk_market_excl_totalsmarket_excl_rms_pct_chg_lwFLOAT64Market-excluding-property room nights percent change versus last week.
adradrFLOAT64Property ADR.
adr_rankadr_rankFLOAT64ADR rank.
revparrevparFLOAT64Property RevPAR.
revpar_rankrevpar_rankFLOAT64RevPAR rank.
market_segmentmarket_segmentSTRINGMarket segment from source.
detailsegment_detailSTRINGSource detail field.
compset_nocs_noINT64Competitive-set number or identifier.
snapshot_datesnap_dateDATEDemand snapshot date.
property_codeproperty_codeSTRINGProperty code.

Segment Mapping Columns

ColumnTypeNotes
segmentSTRINGStandard segment, when mapped.
segment_codeSTRINGStandard segment code, when mapped.
segment_categorySTRINGStandard segment category, when mapped.
segment_mapSTRINGSource segment/detail value.
segment_code_mapSTRINGSource segment code, when supplied.

Metadata Columns

ColumnTypeNotes
source_systemSTRINGSource system or provider.
source_reportSTRINGSource report or feed name.
source_fileSTRINGSource file path or name.
insert_dateDATEInsert date.
updated_dateDATEUpdated date.

snap_demand_source

Grain

The source demand table is keyed at:
property_code + snap_date + stay_date + source
Source values can be mapped into the broader source/channel model as the library matures.

Standardized Columns

Source FieldStandard FieldTypeNotes
monthmonthDATEMonth value normalized to the first day of month.
booking_sourcesourceSTRINGBooking source from the source table.
date, stay_datestay_dateDATEDemand observation date / stay date.
occoccFLOAT64Property occupancy.
compset_occcs_occFLOAT64Competitive-set occupancy.
occ_indexocc_indexFLOAT64Property occupancy index versus compset or market.
occ_rankocc_rankSTRINGOccupancy rank. Cast in views if the source is consistently numeric.
occ_index_vs_prior_year_pctocc_index_pct_chg_lyFLOAT64Occupancy index percent change versus prior year.
occ_index_chg_vs_prior_week_pctocc_index_pct_chg_lwFLOAT64Occupancy index percent change versus prior week.
room_nights_current_my_hotel_totalsrmsINT64Current property room nights / rooms sold.
room_nights_var_pct_to_last_yr_my_hotel_totalsrms_pct_chg_lyFLOAT64Property room nights percent variance versus last year.
room_nights_var_pct_to_last_yr_market_excl_totalsmarket_excl_rms_pct_chg_lyFLOAT64Market-excluding-property room nights percent variance versus last year.
room_nights_chg_from_last_wk_my_hotel_totalsrms_chg_lwINT64Property room nights change versus last week.
room_nights_chg_pct_from_last_wk_my_hotel_totalsrms_pct_chg_lwFLOAT64Property room nights percent change versus last week.
room_nights_chg_pct_from_last_wk_market_excl_totalsmarket_excl_rms_pct_chg_lwFLOAT64Market-excluding-property room nights percent change versus last week.
adradrFLOAT64Property ADR.
adr_rankadr_rankFLOAT64ADR rank.
revparrevparFLOAT64Property RevPAR.
revpar_rankrevpar_rankFLOAT64RevPAR rank.
compset_nocs_noINT64Competitive-set number or identifier.
snapshot_datesnap_dateDATEDemand snapshot date.
property_codeproperty_codeSTRINGProperty code.

Source and Channel Mapping Columns

ColumnTypeNotes
sourceSTRINGStandard source.
source_codeSTRINGStandard source code, when mapped.
source_groupSTRINGStandard source group, when mapped.
source_group_codeSTRINGStandard source group code, when mapped.
channelSTRINGStandard channel.
channel_codeSTRINGStandard channel code.
source_mapSTRINGSource booking source value.
source_code_mapSTRINGSource booking source code, when supplied.

Metadata Columns

ColumnTypeNotes
source_systemSTRINGSource system or provider.
source_reportSTRINGSource report or feed name.
source_fileSTRINGSource file path or name.
insert_dateDATEInsert date.
updated_dateDATEUpdated date.

BigQuery DDL Pattern

The Dataform implementation creates these tables in the demand dataset using the same naming logic:
metrics_demand.snap_demand_property
metrics_demand.snap_demand_segment
metrics_demand.snap_demand_source
Example pattern:
CREATE TABLE IF NOT EXISTS `PROJECT_ID.metrics_demand.snap_demand_property` (
  property_code STRING OPTIONS(description="Property code."),
  snap_date DATE OPTIONS(description="Demand snapshot date."),
  stay_date DATE OPTIONS(description="Stay date for the demand observation."),
  month DATE OPTIONS(description="Month value normalized to the first day of month."),
  market_segment STRING OPTIONS(description="Market segment from the demand source."),
  segment STRING OPTIONS(description="Standard or source segment value, depending on mapping maturity."),
  cs_no STRING OPTIONS(description="Competitive set number or identifier."),
  cs_rms_sold FLOAT64 OPTIONS(description="Competitive-set rooms sold."),
  occ_index FLOAT64 OPTIONS(description="Property occupancy index versus compset or market."),
  occ_rank STRING OPTIONS(description="Occupancy rank."),
  adr FLOAT64 OPTIONS(description="Property ADR."),
  cs_adr FLOAT64 OPTIONS(description="Competitive-set ADR."),
  adr_rank STRING OPTIONS(description="ADR rank."),
  revpar_rank STRING OPTIONS(description="RevPAR rank."),
  occ_yoy FLOAT64 OPTIONS(description="Property occupancy year-over-year value or change as provided by the source."),
  cs_occ_yoy FLOAT64 OPTIONS(description="Competitive-set occupancy year-over-year value or change as provided by the source."),
  occ_index_yoy FLOAT64 OPTIONS(description="Occupancy index year-over-year value or change."),
  adr_yoy FLOAT64 OPTIONS(description="Property ADR year-over-year value or change."),
  cs_adr_yoy FLOAT64 OPTIONS(description="Competitive-set ADR year-over-year value or change."),
  etl_date TIMESTAMP OPTIONS(description="ETL timestamp/date from source process."),
  source_system STRING OPTIONS(description="Source system or provider."),
  source_report STRING OPTIONS(description="Source report or feed name."),
  source_file STRING OPTIONS(description="Source file path or name."),
  insert_date DATE OPTIONS(description="Insert date."),
  updated_date DATE OPTIONS(description="Updated date.")
)
PARTITION BY snap_date
CLUSTER BY property_code, stay_date
OPTIONS(description="Property-level demand, compset, index, and rank metrics.");

Relationship to Other Tables

Demand connects to property, event, price, and pace data by:
property_code + stay_date
Demand segment connects by:
property_code + stay_date + segment / segment_code
Demand source connects by:
property_code + stay_date + source / source_code / channel
BI-facing demand views use the vw_ prefix:
vw_demand_property
vw_demand_segment
vw_demand_source

Operating Notes

  1. Rank fields arrive as strings in some sources and numbers in others. Preserve the source-compatible type in snapshot tables and cast in BI views when the values are consistently numeric.
  2. month is stored as a DATE using the first day of the month. This avoids the slow-motion chaos of mixing strings, datetimes, and calendar labels.
  3. snapshot_date standardizes to snap_date.
  4. date or stay_date standardizes to stay_date.
  5. Demand Channel maps to snap_demand_source, not snap_demand_channel, because source is the standard distribution cut in the library.
  6. market_excl means market excluding the subject property.