EWE vs Numera-Core Layers¶
Two parallel layers of 15-minute power volume views exist. This page explains why and when to use each.
The two layers¶
| Layer | Examples | Owner | EWE BU rules |
|---|---|---|---|
| Numera-core generic | fct_volume_pwr_15m, fct_volume_pwr_15m_deal, fct_volume_pwr_floating_15m, fct_volume_pwr_floating_15m_deal |
numera-core submodule |
Not applied — you apply them in your query |
| EWE wrapper | fct_ewe_volume_pwr_by_business_case, fct_ewe_volume_pwr_by_business_case_deal, fct_ewe_volume_pwr_floating_by_business_case[_deal], and the *_unfiltered / *_quarter_* controlling variants |
EWE project (dbt/models/dimensional/) |
Baked in |
Both layers expose the same column shape (begin_utc, volume_buy_mw, etc.), use the same 96-row gap-fill contract, and apply the same upstream tran_status IN ('Validated', 'Matured') filter.
The structural difference is where the EWE-specific business-unit and portfolio rules live.
What the EWE wrappers add¶
The four short-term desk wrappers embed a hard-coded BU/portfolio filter:
-- fct_ewe_volume_pwr_by_business_case
external_business_unit IN ('ECC INTD BU', 'NORD POOL AS BU')
OR (external_business_unit = 'EWE TR SHORT TERM BU'
AND external_portfolio = 'PWR_ST_PF_Netting')
The deal-grain variant tightens this to ECC + NORD POOL only. The floating variants instead apply instrument_sub_type = 'PWR Index' (which is structural, not BU-specific — see below).
The unfiltered controlling variants drop the BU clause entirely. The quarterly variants are the same as their short-term desk siblings, kept separate for the quarterly controlling cycle.
Why two layers exist¶
The EWE wrappers came first. They embedded the short-term desk's BU rules directly because those were the only consumers at the time. As Numera evolved to support multiple deployments, embedding any single deployment's filters in shared code broke reusability.
ADR-0015 addressed this by:
- Extracting the generic 15-minute fact layer into
numera-corewith no embedded BU filters. - Keeping the EWE wrappers in the EWE project as a thin convenience layer for the short-term desk.
- Establishing a forward direction where customers express filters at query time against the generic layer.
Which layer should I use?¶
Use the generic numera-core views (fct_volume_pwr_15m*) when:¶
- You're starting a new analysis. The generic layer is the strategic direction.
- You need to express filters the EWE wrappers don't pre-apply (other BUs, other portfolios, different tran_status combinations).
- You're doing cross-BU controlling or reporting work.
- You want to drop the EWE-specific assumption that "this is what the short-term desk cares about" and write the filter yourself.
- You're writing a query that should be portable across Numera deployments (this is rare for EWE-internal work, but the pattern is cleaner regardless).
Use the EWE wrappers (fct_ewe_volume_pwr_*) when:¶
- You're maintaining an existing short-term desk report that already runs against them.
- You want the short-term desk's BU rules pre-applied for you and don't want to think about them.
- You're using the semantic views (
sv_power_volumes[_floating]) — they wrap the deal-grain EWE wrappers, not the generic layer.
Migration is underway
EWE users are actively being moved off the wrappers towards the generic views. See How to migrate from EWE views for the playbook. The EWE wrappers will be deprecated once the migration completes — exact timeline pending.
What does not change between layers¶
The data is the same. Migration from EWE wrappers to generic views with the equivalent filter applied reproduces the EWE wrapper output row-for-row for the same date range. See the migration how-to for the validation harness.
What's preserved:
- Column names (
begin_utc,volume_buy_mw,buy_vwap_price_eur_per_mwh, …) - 96-row gap-fill contract
tran_status IN ('Validated', 'Matured')filter (applied upstream in both layers)- VWAP and index price semantics
What's different:
- Generic views expose more surrogate-key columns (
dim_deal_attribute_id,dim_party_*_id,dim_point_of_*_location_id,dim_tran_info_id) for joining to dimensional context. The EWE wrappers expose only the columns the short-term desk uses. - Generic views require you to apply BU/portfolio filters yourself — typically as a CTE or
WHEREclause.
Related¶
- How to migrate from EWE views — view-by-view mapping with Before/After SQL
- Reference: EWE views — column specs for all 9 EWE wrappers
- Reference: Numera-core views — column specs for the 4 generic views
- ADR-0015 — the architecture decision