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_order_items.md 5,892 bytes · Updated Oct 23, 2026 10:44 AM EDT
Raw File

Brink mapping for curated.pos_order_items

Main staging sources used today

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

Mapping groups

  • Business property mappings describe how Brink order-entry content is 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
order_idstaging.brink_sales2_ordersid_encoded fallback order_idCOALESCE(NULLIF(o.id_encoded, ''), CAST(o.order_id AS VARCHAR(50)))MappedResolved from parent order row.
item_idstaging.brink_sales2_order_entriesitem_idCAST(COALESCE(e.item_id, 0) AS INTEGER)MappedDirect item reference with fallback to 0.
item_namestaging.brink_sales2_order_entriesdescriptionCOALESCE(NULLIF(e.description, ''), 'Unknown')MappedTransactional item description with fallback to Unknown.
quantityN/AN/A1 AS quantityMappedHardcoded to 1 per Brink order entry. Each entry row represents one unit.
unit_pricestaging.brink_sales2_order_entriespriceCAST(e.price AS DECIMAL(10, 2))MappedDirect line price.
idstaging.brink_sales2_order_entriesorder_entry_idCAST(COALESCE(e.order_entry_id, 0) AS INTEGER)MappedDirect order-entry identifier with fallback to 0.
size_nameN/AN/ANULLNot mappedNo current size/variant field is used in the Brink curated flow.
modifiersstaging.brink_sales2_order_entry_modifiers(modifier_id, item_id, price)JSON array via LISTAGG with {"modifier_id":..., "item_id":..., "price":...} ordered by modifier_ordinalMappedBuilt from subquery over brink_sales2_order_entry_modifiers grouped by order_id and order_entry_id.
kds_delayN/AN/ANULLNot mappedNo KDS timing field is joined into this curated load.
category_idstaging.brink_settings2_item_groupsitem_group_idCAST(ig.item_group_id AS VARCHAR(199))MappedResolved by joining entry item_id to brink_settings2_item_groups on item_id with item_group_ordinal = 1 and latest snapshot_date <= business_date.
category_namestaging.brink_settings_get_item_groupsnameNULLNot mappedNo item-group name table exists in staging yet. Would require joining to staging.brink_settings_get_item_groups on item_group_id.
item_statusstaging.brink_sales2_order_entries(is_deleted, is_voided, is_cleared)CASE WHEN e.is_deleted THEN 'deleted' WHEN e.is_voided THEN 'voided' WHEN e.is_cleared THEN 'cleared' ELSE 'active' ENDMappedDerived readable status.
modifier_summarystaging.brink_sales2_order_entry_modifiers + staging.brink_settings2_itemsitem_id -> nameLISTAGG(COALESCE(NULLIF(mod_item.name, ''), CAST(m.modifier_id AS VARCHAR(50))), ', ') WITHIN GROUP (ORDER BY m.modifier_ordinal)MappedComma-separated modifier names resolved from brink_settings2_items via item_id, ordered by modifier_ordinal. Falls back to raw modifier_id when name is unavailable.
created_at_utcstaging.brink_sales2_ordersopened_timeCAST(o.opened_time AS TIMESTAMP)MappedBest available order-line time proxy from parent order.
business_datestaging.brink_sales2_ordersbusiness_dateCAST(o.business_date AS DATE)MappedTaken from parent order.
currency_codeN/AN/ANULLNot mappedNo canonical currency source is used by the current Brink curated flow.

Technical and ETL property mappings

Curated ColumnBrink Staging TableBrink Property PathCurrent mappingStatusNotes
order_item_keyN/AN/ANULLNot mappedWarehouse-generated key, not assigned by current insert.
source_systemN/AN/Aconstant 'brink_pos'Derived constantWarehouse constant.
source_order_item_idstaging.brink_sales2_order_entriesorder_entry_idCAST(e.order_entry_id AS VARCHAR(199))MappedDirect Brink source line identifier kept for reconciliation.
tenant_keyN/AN/ANULLNot mappedWarehouse-generated tenant key, not assigned by current insert.
tenant_nameN/AN/Aparameter @tenant_idETL contextPopulated from ETL context, not from Brink payload.
_etl_batch_idstaging.brink_sales2_order_entries_etl_batch_ide._etl_batch_idMappedETL metadata propagated from staging.
_etl_source_typestaging.brink_sales2_order_entries_etl_source_typee._etl_source_typeMappedETL metadata propagated from staging.
_etl_ingested_atstaging.brink_sales2_order_entries_etl_ingested_at_utce._etl_ingested_at_utc AS _etl_ingested_atMappedETL metadata propagated from staging.

Portal and sample validation

Curated fieldAdditional validated sourceHow to use it
item_nameSettings2.GetItems -> Items[].NameUse the item master name as a fallback when transactional Description is not stable enough.
category_nameSettings.GetItemGroups -> ItemGroup.NameResolve category name by joining to item-group staging when staging.brink_settings_get_item_groups becomes available.
modifiersSettings.GetModifierCodes -> ModifierCode.NameBrink portal WSDL confirms modifier-code lookup that can enrich serialized modifier text with readable names.