offdataai
SAP · data model template

SAP Ariba Spend & Sourcing Analytics data model

Kimball warehouse for SAP Ariba procurement analytics: a transaction-grain spend fact classifies each invoice/PO line to a UNSPSC commodity and category, carrying spend/addressable/off-contract amounts plus on-contract, preferred-supplier, PO-backed, and maverick flags for spend-visibility and contract-compliance reporting. A sourcing-event fact captures RFI/RFP/auction lots with baseline, awarded, identified, and realized savings and bid participation, using two date roles (publish/award) and an awarded-supplier role-play of the supplier dimension. Supplier is SCD2 with diversity and risk; the contract dimension drives off-contract/maverick compliance analysis.

SAP Ariba Spend Analysis and Strategic Sourcing analytics integrated with S/4HANA procurement, modelled in Snowflake. Centralizes spend visibility by supplier, sourcing category, and UNSPSC commodity, exposing addressable spend, contract compliance, maverick (off-contract) spend, and supplier diversity, alongside Ariba Sourcing RFI/RFP/auction events with identified-vs-realized savings. A transaction-grain spend fact (one classified invoice/PO line) and a sourcing-event fact (one awarded lot) share conformed supplier (SCD2), commodity (UNSPSC), category, cost center, company code, purchasing org, contract, and buyer dimensions. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.

KimballSAPSOX
11
tables
107
columns
16
relationships
3
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

spendsourcingconformed_dimensions

Design decisions

  • Transaction-grain classified spend fact with compliance flags

    Spend analysis requires drill-down from addressable spend to the individual invoice/PO line; declaring fct_spend at the classified transaction-line grain (one line mapped to a commodity) keeps on-contract, preferred-supplier, PO-backed, and maverick flags additive at the lowest level so maverick and contract-compliance spend roll up to any supplier, category, or commodity.

  • UNSPSC commodity dimension with a classification hierarchy

    Ariba Spend Analysis classifies spend to UNSPSC; modelling commodity as a conformed dimension carrying segment/family/class/commodity levels lets addressable spend aggregate along the standard commodity hierarchy independent of the buyer-facing category taxonomy.

  • Separate sourcing-event fact for identified vs realized savings

    Sourcing events award at a different grain (one awarded lot) than spend transactions, so fct_sourcing_event isolates baseline, awarded, identified, and realized savings and bid participation; keeping it separate avoids mixing event-level savings semantics into the transaction-grain spend fact while sharing conformed dimensions.

  • Supplier modelled SCD2 with diversity and risk attributes

    Diversity classification, risk rating, and qualification status change over time and are reported as-was; type-2 history on the supplier dimension preserves the supplier attributes effective when the spend or award occurred, supporting diversity and risk trend reporting.

  • Contract dimension to measure off-contract / maverick spend

    Contract compliance is the core spend-analysis KPI; a conformed contract dimension joined from the spend fact lets off-contract and maverick spend be quantified against committed contract value and validity windows for SOX-relevant procurement controls.

Tables in the SAP Ariba Spend & Sourcing Analytics model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Fact tables (2)

fct_spend

Grain: one row per classified spend transaction line (invoice/PO line mapped to a commodity)

Transaction-grain classified spend fact — addressable, contract-compliance, and maverick analysis.

ColumnTypeKeys
spend_keybigintPK
spend_date_keybigint
supplier_keybigint
commodity_keybigint
category_keybigint
cost_center_keybigint
company_code_keybigint
purchasing_org_keybigint
contract_keybigint
buyer_keybigint
spend_amountdecimal
addressable_spenddecimal
off_contract_spenddecimal
tax_amountdecimal
quantitydecimal
unit_pricedecimal
currencyvarchar
is_on_contractboolean
is_preferred_supplierboolean
is_po_backedboolean
is_maverickboolean
spend_classificationvarchar

fct_sourcing_event

Grain: one row per sourcing event / awarded lot

Sourcing-event-grain fact — identified vs realized savings and bid participation.

ColumnTypeKeys
sourcing_event_keybigintPK
publish_date_keybigint
award_date_keybigint
category_keybigint
commodity_keybigint
owner_buyer_keybigint
awarded_supplier_keybigint
company_code_keybigint
event_idvarchar
lot_idvarchar
baseline_spenddecimal
awarded_spenddecimal
identified_savingsdecimal
realized_savingsdecimal
savings_pctdecimal
suppliers_invitedinteger
suppliers_respondedinteger
lot_countinteger
event_cycle_daysinteger
event_typevarchar
event_statusvarchar

Dimension tables (9)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
day_of_monthsmallint
month_numbersmallint
month_namevarchar
quartersmallint
yearsmallint
fiscal_periodvarchar
is_business_dayboolean

dim_supplier

Grain: one row per supplier per SCD2 version (Ariba SM vendor / S/4HANA lifnr)

SCD type 2

ColumnTypeKeys
supplier_keybigintPK
supplier_idvarcharBK
supplier_namevarcharPII
countryvarchar
regionvarchar
diversity_classificationvarchar
risk_ratingvarchar
is_preferredboolean
is_qualifiedboolean
parent_supplier_idvarchar
is_activeboolean

dim_commodity

Grain: one row per UNSPSC commodity code

ColumnTypeKeys
commodity_keybigintPK
commodity_codevarcharBK
commodity_namevarchar
segmentvarchar
familyvarchar
class_levelvarchar
unspsc_levelvarchar

dim_category

Grain: one row per Ariba sourcing/spend category

ColumnTypeKeys
category_keybigintPK
category_codevarcharBK
category_namevarchar
category_l1varchar
category_l2varchar
category_l3varchar
category_managervarcharPII
is_directboolean

dim_cost_center

Grain: one row per cost center

ColumnTypeKeys
cost_center_keybigintPK
cost_centervarcharBK
cost_center_namevarchar
profit_centervarchar
departmentvarchar

dim_company_code

Grain: one row per SAP company code

ColumnTypeKeys
company_code_keybigintPK
company_codevarcharBK
company_namevarchar
countryvarchar
currencyvarchar

dim_purchasing_org

Grain: one row per purchasing organization

ColumnTypeKeys
purchasing_org_keybigintPK
purchasing_orgvarcharBK
descriptionvarchar
company_codevarchar

dim_contract

Grain: one row per procurement contract

ColumnTypeKeys
contract_keybigintPK
contract_idvarcharBK
supplier_idvarchar
contract_typevarchar
valid_fromdate
valid_todate
committed_valuedecimal
is_auto_renewboolean
contract_statusvarchar

dim_buyer

Grain: one row per buyer / category manager

ColumnTypeKeys
buyer_keybigintPK
buyer_idvarcharBK
buyer_namevarcharPII
category_managedvarchar
regionvarchar
is_activeboolean

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • fct_spend.spend_date_key → dim_date (many-to-one)
  • fct_spend.supplier_key → dim_supplier (many-to-one)
  • fct_spend.commodity_key → dim_commodity (many-to-one)
  • fct_spend.category_key → dim_category (many-to-one)
  • fct_spend.cost_center_key → dim_cost_center (many-to-one)
  • fct_spend.company_code_key → dim_company_code (many-to-one)
  • fct_spend.purchasing_org_key → dim_purchasing_org (many-to-one)
  • fct_spend.contract_key → dim_contract (many-to-one)
  • fct_spend.buyer_key → dim_buyer (many-to-one)
  • fct_sourcing_event.publish_date_key → dim_date (many-to-one)
  • fct_sourcing_event.award_date_key → dim_date (many-to-one)
  • fct_sourcing_event.category_key → dim_category (many-to-one)
  • fct_sourcing_event.commodity_key → dim_commodity (many-to-one)
  • fct_sourcing_event.owner_buyer_key → dim_buyer (many-to-one)
  • fct_sourcing_event.awarded_supplier_key → dim_supplier (many-to-one)
  • fct_sourcing_event.company_code_key → dim_company_code (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time