Queensway Workflow
The Queensway workflow uses our Guestline chain tasks to build a complete, end-to-end ETL pipeline for Queensway properties.
Workflow Overview
This workflow follows a standard ETL pattern with four main stages:
- Raw Data Ingestion & Crawling - Using
GuestlineRawTaskto ingest and parse roompick and personprofile payloads - Data Cleaning - Using
CleanGuestlineTaskto standardize the payloads intoClean*models - Processing - Running the standard
ProcessingTasksubtasks (with optional skip/insert for chain-specific merge logic) - Report Generation - Producing reports with
ReportsTaskand writing to BigQuery
Pipeline Architecture
┌─────────────────────┐
│ GuestlineRawTask │ ← Ingestion + Crawling
└──────────┬──────────┘
│ RawRoompicksModel
│ RawPersonprofilesModel
↓
┌─────────────────────┐
│ CleanGuestlineTask │ ← Data Cleaning
└──────────┬──────────┘
│ CleanGuestModel
│ CleanReservationModel
│ CleanRoomModel
↓
┌─────────────────────┐
│ ProcessingTask │ ← Business Logic
└──────────┬──────────┘
│ ProcessedGuestModel
│ ProcessedReservationModel
│ ProcessedRoomModel
↓
┌─────────────────────┐
│ ReportsTask │ ← Analytics Reports
└─────────────────────┘Configuration
GuestlineRawTask(job_context=..., skip_ingestion=False, sync_dates=...)- controls ingest vs use of existing filesmodel_configsmay override default raw database names:
{
"RawRoompicksModel": { "database": "etl_gp_raw_queensway" },
"RawPersonprofilesModel": { "database": "etl_gp_raw_queensway" }
}Execution Flow
When orchestrator.run() is called for Queensway (see jobs/queensway_task.py):
GuestlineRawTaskwrites ingest/raw files forroompicksandpersonprofiles.CleanGuestlineTaskstandardizes fields and produces cleaned models.ProcessingTasktransforms cleaned models into processed tables; optionally skipGuestMatchingTaskas Queensway does in certain runs.ReportsTaskwrites final analytics tables into BigQuery.
Additional Notes
- Queensway uses the Guestline chain tasks, so any improvements in
guestlinechain tasks will benefit Queensway. - The
CleanGuestlineTaskcontains Queensway-specific helpers and mapping logic (address fields, company/travel agent mapping, exclude-from-mailings flags). - Keep
JobContextconfigured with the correctchain_id(queensway) and partion count for performance on batch processing.
Recommended Jobs
jobs/queensway_task.py— Example job that demonstrates a full run of the Queensway pipeline (ingest, clean, processing, reports) and shows usage ofskip_subtasksandskip_task.
Last updated on