Reference: EWE Wrapper Views¶
Column-level reference for the 9 EWE-specific 15-minute power volume views.
All views in this section:
- Are views (not tables). Don't materialise them — see Gap-filling.
- Are gated by the
time_series.15mfeature flag. - Apply
tran_status IN ('Validated', 'Matured')upstream. - Guarantee 96 rows per
(combo, delivery_date_utc). Gap rows return0for volume and price columns. - Require consumers to filter by
delivery_date_utcorbegin_utcfor partition pruning.
For the generic numera-core equivalents, see Numera-core views. For migration, see How to migrate from EWE views.
Short-term desk (filtered)¶
fct_ewe_volume_pwr_by_business_case¶
Fixed-price 15-minute power volumes aggregated by business case and grid for the short-term desk.
Path: dbt/models/dimensional/short_term_desk/fct_ewe_volume_pwr_by_business_case.sql
Grain: business_case + grid + begin_utc
Business rules:
tran_status IN ('Validated', 'Matured')external_business_unit IN ('ECC INTD BU', 'NORD POOL AS BU')OR (external_business_unit = 'EWE TR SHORT TERM BU'ANDexternal_portfolio = 'PWR_ST_PF_Netting')
Columns:
| Column | Type | Description |
|---|---|---|
delivery_date_utc |
DATE | Delivery date (UTC). Sourced from dim_period.start_date; always populated. |
begin_utc |
TIMESTAMP_TZ | 15-minute period start (UTC) |
end_utc |
TIMESTAMP_TZ | 15-minute period end (UTC) |
begin_cet |
TIMESTAMP_TZ | 15-minute period start (Europe/Berlin) |
end_cet |
TIMESTAMP_TZ | 15-minute period end (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 | Volume-weighted average buy price (EUR/MWh). 0 when no buy volume. |
sell_vwap_price_eur_per_mwh |
NUMBER | Volume-weighted average sell price (EUR/MWh). 0 when no sell volume. |
Tests:
unique_combination_of_columns(business_case, grid, begin_utc)period_coverage_96on combo(business_case, grid)period_continuityon combo(business_case, grid)vwap_implies_volume- Range checks on volumes and prices (warn only)
fct_ewe_volume_pwr_by_business_case_deal¶
Deal-level drill-down of the short-term desk fixed-price view.
Path: dbt/models/dimensional/short_term_desk/fct_ewe_volume_pwr_by_business_case_deal.sql
Grain: business_case + grid + deal_id + dim_deal_attribute_id + begin_utc
Business rules:
tran_status IN ('Validated', 'Matured')external_business_unit IN ('ECC INTD BU', 'NORD POOL AS BU')
The BU clause is tighter than the parent view — no portfolio carve-out for EWE TR SHORT TERM BU.
Additional columns (beyond the parent):
| Column | Type | Description |
|---|---|---|
deal_id |
INTEGER | Endur deal identifier |
dim_deal_attribute_id |
INTEGER | FK to dim_deal_attribute for portfolio/instrument context |
Tests: parent set, with combo extended to (business_case, grid, deal_id, dim_deal_attribute_id).
fct_ewe_volume_pwr_floating_by_business_case¶
Index-priced (floating) 15-minute power volumes for the short-term desk.
Path: dbt/models/dimensional/short_term_desk/fct_ewe_volume_pwr_floating_by_business_case.sql
Grain: business_case + grid + internal_business_unit + external_business_unit + power_index_name + begin_utc
Business rules:
tran_status IN ('Validated', 'Matured')instrument_sub_type = 'PWR Index'
Notice this view filters by instrument type, not BU. Cross-BU floating volumes are in scope as long as the instrument is PWR Index.
Columns (replaces VWAP columns with index price; adds BU + index name):
| Column | Type | Description |
|---|---|---|
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. For a monthly index, the month's value in every period of the month. 0 on gap rows and where the index has no price for that delivery day. |
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 from
core_endur_index_pricing_15m_dailywhen you query, by index and delivery day. It therefore 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.
- Some indices have no 15-minute prices, only monthly values. For example, the monthly market-value indices
PWR_MMW_Wind_OnShore_DE.EUR,PWR_MMW_Solar_DE.EURandPWR_MMW_Wind_OffShore_DE.EURhave none. Rows on these indices show the month's value in every period: the published value once it is out, Endur's forward value before that. See How to query floating index volumes.
Tests: unique_combination_of_columns and period_coverage_96 / period_continuity on the full 5-column combo. vwap_implies_volume does not apply (no VWAP).
fct_ewe_volume_pwr_floating_by_business_case_deal¶
Deal-level drill-down of the floating view.
Path: dbt/models/dimensional/short_term_desk/fct_ewe_volume_pwr_floating_by_business_case_deal.sql
Grain: parent grain + deal_id + dim_deal_attribute_id.
Business rules: same as parent.
Additional columns: deal_id, dim_deal_attribute_id.
Index price: power_index_price_eur_per_mwh follows the same rules as the parent view. It comes from the index's own reference source, it is looked up when you query, and it is 0 on gap rows and where the index has no price (monthly indices carry their monthly value). Every deal on the same index and period shows the same price.
Controlling (unfiltered)¶
The controlling variants drop the short-term desk's BU/portfolio filter. They still apply tran_status IN ('Validated', 'Matured') upstream.
fct_ewe_volume_pwr_by_business_case_unfiltered¶
Same column shape as fct_ewe_volume_pwr_by_business_case but with no BU clause — all business units included.
Path: dbt/models/dimensional/controlling/fct_ewe_volume_pwr_by_business_case_unfiltered.sql
Grain: business_case + grid + begin_utc
Use case: cross-BU controlling reports where the short-term desk's BU lens would hide relevant activity.
Note: numeric columns are cast to FLOAT.
fct_ewe_volume_pwr_by_business_case_deal_unfiltered¶
Deal-level variant of *_unfiltered. Adds deal_id.
Path: dbt/models/dimensional/controlling/fct_ewe_volume_pwr_by_business_case_deal_unfiltered.sql
Grain: business_case + grid + deal_id + begin_utc
fct_ewe_volume_pwr_by_business_case_with_bu_unfiltered¶
Like *_unfiltered but with internal and external BU breakouts surfaced as columns. Use when controlling needs a BU-level view in a single query.
Path: dbt/models/dimensional/controlling/fct_ewe_volume_pwr_by_business_case_with_bu_unfiltered.sql
Grain: business_case + grid + internal_business_unit + external_business_unit + begin_utc
Additional columns:
| Column | Type | Description |
|---|---|---|
internal_business_unit |
VARCHAR | Internal BU name from sat_party_internal_bu_le_attribute |
external_business_unit |
VARCHAR | External BU name from sat_party_external_bu_le_attribute |
Quarterly controlling¶
The quarterly variants are thin select * views over their core_*__real intermediate. They retain dim_deal_attribute_id so consumers can join dim_deal_attribute for portfolio/instrument filtering — useful for the controlling quarterly cycle.
fct_volume_pwr_quarter_fixed_price¶
Path: dbt/models/dimensional/controlling/fct_volume_pwr_quarter_fixed_price.sql
Grain: business_case + grid + dim_deal_attribute_id + begin_utc
Business rules: tran_status IN ('Validated', 'Matured'). No BU filter.
Columns: same shape as the short-term desk fixed-price views plus dim_deal_attribute_id.
fct_volume_pwr_quarter_fixed_price_deal¶
Path: dbt/models/dimensional/controlling/fct_volume_pwr_quarter_fixed_price_deal.sql
Grain: parent grain + deal_id.
Test coverage at a glance¶
| View | unique_combo |
period_coverage_96 |
period_continuity |
vwap_implies_volume |
|---|---|---|---|---|
fct_ewe_volume_pwr_by_business_case |
✓ | ✓ | ✓ | ✓ |
fct_ewe_volume_pwr_by_business_case_deal |
✓ | ✓ | ✓ | ✓ |
fct_ewe_volume_pwr_floating_by_business_case |
✓ | ✓ | ✓ | — |
fct_ewe_volume_pwr_floating_by_business_case_deal |
✓ | ✓ | ✓ | — |
fct_ewe_volume_pwr_by_business_case_unfiltered |
not_null only | — | — | — |
fct_ewe_volume_pwr_by_business_case_deal_unfiltered |
not_null only | — | — | — |
fct_ewe_volume_pwr_by_business_case_with_bu_unfiltered |
not_null only | — | — | — |
fct_volume_pwr_quarter_fixed_price |
not_null only | — | — | — |
fct_volume_pwr_quarter_fixed_price_deal |
not_null only | — | — | — |
The controlling and quarterly variants share the upstream pipeline with the fully-tested short-term desk wrappers, so they inherit the gap-fill correctness from the same intermediates.
Related¶
- Numera-core views — generic equivalents
- Semantic views —
sv_power_volumes,sv_power_volumes_floating - How to migrate from EWE views — moving to the generic layer
- Gap-filling — what guarantees the 96-row contract