Spensara Spensara Knowledge Base & Documentation Repository

Repository Docs & Knowledge Base

Consolidated Spensara documentation repository (722 Markdown & architecture documents in ../repository)
Built Word Documents (.docx): Spensara Overview (.docx) Capability Assessment (.docx) Brink POS Ingestion Analysis (.docx) The Borg Ingestion Architecture (.docx)

Warehouse Model (93)

Analytical data warehouse schemas, curated tables, and Redshift/Athena data models.
warehouse-model/docs/features/ETL/warehouse-data/brinkPos-curated-model-mapps/pos_hourly_sales.md 5,781 bytes · Updated Oct 23, 2026 10:44 AM EDT
Raw File

Brink mapping for curated.pos_hourly_sales

Main staging sources

  • staging.brink_sales2_orders
  • staging.brink_sales2_order_entries
  • staging.brink_settings2_items
  • staging.brink_settings2_item_groups

Mapping groups

  • Business property mappings describe how Brink hourly sales content is mapped or could be mapped into curated business fields.
  • Technical and ETL property mappings describe lineage, source reconciliation, tenant scoping, and ingestion metadata.

Business property mappings

Curated ColumnBrink Staging TableBrink Property PathCurrent mappingStatusNotes
dobstaging.brink_sales2_ordersbusiness_dateNULLNot mappedDirect business date for aggregation.
storeidN/AN/ANULLNot mappedThe documented Brink staging model does not expose a store ID on these payloads.
occasionidstaging.brink_sales2_ordersdestination_idNULLNot mappedBest available service-occasion style field.
keyvolumestaging.brink_sales2_orders(order_count, guest_count)NULLNot mappedDerived aggregate, typically count(*) or sum(guest_count) depending on final grain rules.
revidstaging.brink_sales2_order_entriesrevenue_center_idNULLNot mappedDerived aggregate grouped by order-item revenue center.
catidstaging.brink_settings2_item_groupsitem_group_idNULLNot mappedDerived aggregate grouped by Brink item-group IDs.
starthourstaging.brink_sales2_ordersopened_timeNULLNot mappedDerive hour bucket from the UTC timestamp.
startminstaging.brink_sales2_ordersopened_timeNULLNot mappedDerive minute bucket from the UTC timestamp.
amountstaging.brink_sales2_order_entriesitem_net_salesNULLNot mappedBest line-level monetary source for category and revenue-center aggregation.
regionidN/AN/ANULLNot mappedNo region field is documented in Brink staging.
stophourN/AN/ANULLNot mappedBucket end must be derived by warehouse logic, not sourced directly.
stopminN/AN/ANULLNot mappedBucket end must be derived by warehouse logic, not sourced directly.
store_nameN/AN/ANULLNot mappedNo store name is documented in the available Brink staging model.
occasion_namestaging.brink_settings2_get_destinationsnameNULLNot mappedResolve destination/occasion name by joining staging.brink_sales2_orders on destination_id to staging.brink_settings2_get_destinations on destination_id.
revenue_center_namestaging.brink_settings_get_revenue_centersnameNULLNot mappedResolve revenue center name by joining staging.brink_sales2_order_entries (via revid / revenue_center_id) to staging.brink_settings_get_revenue_centers on revenue_center_id.
category_namestaging.brink_settings_get_item_groupsnameNULLNot mappedResolve category name by joining catid (item_group_id) to staging.brink_settings_get_item_groups on item_group_id.
transaction_countstaging.brink_sales2_ordersorder_countNULLNot mappedDerived aggregate count of orders or transactions in the bucket.
guest_countstaging.brink_sales2_ordersguest_countNULLNot mappedDerived aggregate sum by bucket.
quantity_soldN/AN/ANULLNot mappedBrink order-item staging does not document a quantity field for line items.
currency_codeN/AN/ANULLNot mappedCurrency is not documented in the available Brink staging model.
timezone_nameN/AN/ANULLNot mappedTimezone metadata is not documented in the available Brink staging model.

Technical and ETL property mappings

Curated ColumnBrink Staging TableBrink Property PathCurrent mappingStatusNotes
hourly_sales_keyN/AN/ANULLNot mappedWarehouse-generated key.
source_systemN/AN/Aconstant 'brink_pos'Derived constantWarehouse constant, not a Brink API field.
tenant_keyN/AN/ANULLNot mappedWarehouse-generated tenant key.
tenant_nameN/AN/Aparameter @tenant_idETL contextTenant metadata is outside the documented Brink staging payloads.
_etl_batch_idstaging.brink_sales2_orders_etl_batch_id_etl_batch_idMappedETL metadata propagated from staging.
_etl_source_typestaging.brink_sales2_orders_etl_source_type_etl_source_typeMappedETL metadata propagated from staging.
_etl_ingested_atstaging.brink_sales2_orders_etl_ingested_at_utc_etl_ingested_at_utc AS _etl_ingested_atMappedETL metadata propagated from staging.

Portal and sample validation

Curated fieldAdditional validated sourceHow to use it
occasionidSales2.GetOrders -> Orders[].Entries[].OrderItem.DayPartIdThe order response and WSDL confirm DayPartId, which can be a better meal-period input than destination for some hourly aggregates.
occasion_nameSettings.GetDayParts -> DayPart.NameBrink portal WSDL confirms a day-part lookup endpoint for resolving DayPartId.
category_nameSettings.GetItemGroups -> ItemGroup.NameUse this lookup to name hourly category aggregates derived from item groups.
revenue_center_nameSettings.GetRevenueCenters -> RevenueCenter.NameUse this lookup to name hourly revenue-center aggregates derived from RevenueCenterId.