Skip to content

Reference: Numera-Core 15m Views

Column-level reference for the 4 generic numera-core 15-minute power volume views. These are the migration target for users currently on the EWE wrappers — see How to migrate from EWE views.

All views in this section:

  • Are views over the fct_volume_pwr_*_agg incremental aggregates.
  • Are gated by the time_series.15m feature flag.
  • Apply tran_status IN ('Validated', 'Matured') and Business Case IS NOT NULL upstream.
  • Apply no EWE-specific BU or portfolio filters — you apply those in your query.
  • Guarantee 96 rows per (combo, delivery_date_utc). See Gap-filling.
  • Require consumers to filter by delivery_date_utc or begin_utc for partition pruning.

For the EWE wrapper equivalents, see EWE views.


fct_volume_pwr_15m

15-minute fixed-price volumes aggregated by business case and grid.

Path (numera-core): models/endur/volume/15m/volume_pwr_15m/fct_volume_pwr_15m.sql

Grain: business_case + grid + begin_utc (at output); the intermediate aggregate retains dim_deal_attribute_id for portfolio joins.

Source: fct_volume_pwr_15m_agg (incremental) — pivots fct_volume_15m to BC+grid grain with 96-slot volume and volume-weighted price arrays.

Columns:

Column Type Description
dim_deal_attribute_id INTEGER FK to dim_deal_attribute for portfolio/instrument context
dim_tran_info_id INTEGER FK to dim_tran_info (transaction metadata SCD)
dim_point_of_receipt_location_id INTEGER FK to dim_point_of_receipt_location (buy-side delivery point)
dim_point_of_delivery_location_id INTEGER FK to dim_point_of_delivery_location (sell-side delivery point)
dim_deal_financial_id INTEGER FK to dim_deal_financial
dim_party_internal_bu_le_attribute_id INTEGER FK to internal BU / legal entity
dim_party_external_bu_le_attribute_id INTEGER FK to external BU / legal entity
delivery_date_utc DATE Delivery date (UTC)
begin_utc / end_utc TIMESTAMP_TZ Period bounds (UTC)
begin_cet / end_cet TIMESTAMP_TZ Period bounds (Europe/Berlin)
grid VARCHAR Power control area
business_case VARCHAR Trading strategy/desk
volume_buy_mw NUMBER Buy volume (MW). 0 on gap rows.
volume_sell_mw NUMBER Sell volume (MW). 0 on gap rows.
buy_vwap_price_eur_per_mwh NUMBER VWAP buy price (EUR/MWh)
sell_vwap_price_eur_per_mwh NUMBER VWAP sell price (EUR/MWh)
volume_x_price NUMBER volume_mwh × price for the period, in EUR. Provided as a precomputed cash-flow term.

VWAP roll-ups: weight by volume_buy_mw / volume_sell_mw

To aggregate VWAP across periods, use SUM(volume_buy_mw × buy_vwap_price_eur_per_mwh) / NULLIF(SUM(volume_buy_mw), 0) (and the analogous expression for sell). Do not divide SUM(volume_x_price) by SUM(volume_buy_mw) — that returns one-quarter of the true VWAP because volume_buy_mw = volume_mwh × 4. The raw volume_mwh is not exposed on the view.


fct_volume_pwr_15m_deal

Deal-grain variant of fct_volume_pwr_15m.

Path: models/endur/volume/15m/volume_pwr_15m/fct_volume_pwr_15m_deal.sql

Grain: business_case + grid + deal_id + begin_utc

Additional column:

Column Type Description
deal_id INTEGER Endur deal identifier

All other columns match fct_volume_pwr_15m.


fct_volume_pwr_floating_15m

15-minute floating / index-priced volumes aggregated by business case, grid, BU, and index.

Path: models/endur/volume/15m/volume_pwr_15m/fct_volume_pwr_floating_15m.sql

Grain: business_case + grid + internal_business_unit + external_business_unit + power_index_name + begin_utc

Source: fct_volume_pwr_floating_15m_agg, which pivots floating-side fct_volume_15m rows. The index price is looked up from core_endur_index_pricing_15m_daily when you query, by index and delivery day.

Upstream filter: instrument_sub_type = 'PWR Index' (applied in the agg).

Columns:

Column Type Description
dim_deal_attribute_id INTEGER FK to dim_deal_attribute
dim_tran_info_id INTEGER FK to dim_tran_info
dim_deal_financial_id INTEGER FK to dim_deal_financial
dim_point_of_receipt_location_id INTEGER FK
dim_point_of_delivery_location_id INTEGER FK
dim_party_internal_bu_le_attribute_id INTEGER FK to internal BU
dim_party_external_bu_le_attribute_id INTEGER FK to external BU
delivery_date_utc DATE Delivery date (UTC)
begin_utc / end_utc TIMESTAMP_TZ Period bounds (UTC)
begin_cet / end_cet TIMESTAMP_TZ Period bounds (Europe/Berlin)
grid VARCHAR Power control area
business_case VARCHAR Trading strategy/desk
internal_business_unit VARCHAR Internal BU name
external_business_unit VARCHAR External BU name
power_index_name VARCHAR Index name (e.g. PWR EPEX_DE_INTRADAY 15min)
volume_buy_mw NUMBER Buy volume (MW). 0 on gap rows.
volume_sell_mw NUMBER Sell volume (MW). 0 on gap rows.
power_index_price_eur_per_mwh NUMBER Index price (EUR/MWh): the index's published 15-minute price for the period. NULL where the index has no 15-minute price for that delivery day.

No VWAP columns. The floating variant exposes power_index_price_eur_per_mwh instead.

Index price:

  • The price comes from the index's own reference source, which is set on the index definition in Endur. Each index has one reference source, so the price is the same for every row on that index and period.
  • The price is looked up when you query, so it always shows the current price that Numera holds for that index and delivery day. When an index price is revised, the new value appears the next time you query.
  • The price is a single value per index and period. It is not summed or weighted across the deals or business units in the row.
  • Where no 15-minute price exists, the column is NULL, not 0. The EWE wrappers show 0 in the same case. The monthly market-value indices (PWR_MMW_*) never have 15-minute prices. See How to query floating index volumes.

fct_volume_pwr_floating_15m_deal

Deal-grain variant of fct_volume_pwr_floating_15m.

Path: models/endur/volume/15m/volume_pwr_15m/fct_volume_pwr_floating_15m_deal.sql

Grain: parent grain + deal_id.

Additional column:

Column Type Description
deal_id INTEGER Endur deal identifier. May be NULL on gap rows.

power_index_price_eur_per_mwh follows the same rules as the parent view. It comes from the index's own reference source, and it is NULL where the index has no 15-minute price. Every deal on the same index and period shows the same price.


Cancelled deals in other volume views

The four views above apply the tran_status IN ('Validated', 'Matured') allow-list. Other numera-core volume views do not use that allow-list; ten of them instead exclude deals whose current status is Cancelled and keep all other statuses: fct_volume_15m, fct_volume_15m_deal, fct_volume_factor_deal, fct_volume_pwr_daily, fct_volume_pwr_15m_agg, fct_volume_pwr_floating_15m_agg, fct_volume_gas_daily, fct_volume_daily, fct_volume_daily_old and fct_schedule. The version-history views fct_schedule_history and fct_volume_history_daily are unchanged and still list every version of a deal. See Cancelled and withdrawn deals for the exact rule.

Surrogate-key columns are the join point

Unlike the EWE wrappers, the numera-core views deliberately expose surrogate-key columns (dim_deal_attribute_id, dim_party_*_id, dim_point_of_*_location_id, dim_tran_info_id). These are the join points to dimensional context — portfolio, instrument, counterparty, location.

See How to join dimensional views for worked examples.

Output shape vs EWE wrappers

Aspect EWE wrappers Numera-core views
Gap-fill (96 rows / day) ✓ ✓
delivery_date_utc, begin_utc, end_utc, begin_cet, end_cet ✓ ✓
volume_buy_mw, volume_sell_mw ✓ ✓
buy_vwap_price_eur_per_mwh, sell_vwap_price_eur_per_mwh (fixed) ✓ ✓
power_index_price_eur_per_mwh (floating) ✓ ✓
Index price where the index has no 15-minute price 0 NULL
grid, business_case ✓ ✓
Surrogate-key columns (dim_*_id) — ✓
volume_x_price helper — ✓ (fixed-price variants)
EWE BU/portfolio filter pre-applied ✓ (short-term desk) —