Tutorial: Getting Started with 15-Minute Power Volumes¶
This tutorial walks you through running your first 15m power volume query, reading the output, and adding filters. Plan for about 15 minutes.
You'll use the generic fct_volume_pwr_15m view — the migration target for new work.
What you need¶
- Snowflake access to
NUMERA_EWE_PROD_CORE.NUMERA_DIM_MODEL - A reporting role (e.g.
NUMERA_EWE_PROD_REPORTER) - A warehouse (
NUMERA_PROD_REPORTINGis fine) - The
time_series.15mfeature flag must be enabled on your stack (see Feature flag)
If you don't have access yet, see Connecting to Data.
Step 1 — One day, one business case¶
Pick a recent date and a business case you know is active. Run:
select
delivery_date_utc,
begin_utc,
begin_cet,
business_case,
grid,
volume_buy_mw,
volume_sell_mw,
buy_vwap_price_eur_per_mwh,
sell_vwap_price_eur_per_mwh
from fct_volume_pwr_15m
where delivery_date_utc = '2026-04-15'
and business_case = 'Intraday'
order by begin_utc, grid
limit 200
You should get back rows with 15-minute UTC start timestamps (00:00, 00:15, …, 23:45), one per (grid, business_case, dim_deal_attribute_id) combination per period.
Step 2 — Read the output¶
A few things to notice:
- 96 rows per day per combo. Some rows have
volume_buy_mw = 0andvolume_sell_mw = 0. Those are gap rows — every period gets a row even when no trade contributed. See Gap-filling. begin_utcvsbegin_cet. Same instant, different time zones. UTC is always 96 periods per day; CET may have 92 or 100 distinct labels on DST days. See Time zones and DST.- The grain is wider than you might expect. The view is at deal-attribute grain — multiple rows can have the same
(begin_utc, business_case, grid)if differentdim_deal_attribute_ids contributed. To collapse to business-case grain, aggregate:
select
delivery_date_utc,
begin_utc,
business_case,
grid,
sum(volume_buy_mw) as volume_buy_mw,
sum(volume_sell_mw) as volume_sell_mw
from fct_volume_pwr_15m
where delivery_date_utc = '2026-04-15'
and business_case = 'Intraday'
group by 1, 2, 3, 4
order by 2, 4
Step 3 — Add a portfolio filter¶
Join dim_deal_attribute to filter by portfolio:
select
f.delivery_date_utc,
f.begin_utc,
f.business_case,
f.grid,
sum(f.volume_buy_mw) as volume_buy_mw,
sum(f.volume_sell_mw) as volume_sell_mw
from fct_volume_pwr_15m f
join dim_deal_attribute da
on f.dim_deal_attribute_id = da.dim_deal_attribute_id
where da.portfolio = 'PWR_ST_PF_Netting'
and f.delivery_date_utc = '2026-04-15'
group by 1, 2, 3, 4
order by 2, 4
The dim_deal_attribute_id surrogate-key column on fct_volume_pwr_15m is the join point to any deal-level filter — portfolio, instrument, buy/sell, commodity. See Join dimensional views.
Step 4 — Drill down to deals¶
When you need per-deal detail, switch to the deal-grain variant:
select
f.delivery_date_utc,
f.deal_id,
f.business_case,
f.grid,
da.portfolio,
sum(f.volume_buy_mw) as volume_buy_mw,
sum(f.volume_sell_mw) as volume_sell_mw,
avg(f.buy_vwap_price_eur_per_mwh) as avg_buy_vwap
from fct_volume_pwr_15m_deal f
join dim_deal_attribute da
on f.dim_deal_attribute_id = da.dim_deal_attribute_id
where da.portfolio = 'PWR_ST_PF_Netting'
and f.delivery_date_utc = '2026-04-15'
group by 1, 2, 3, 4, 5
order by sum(f.volume_buy_mw) + sum(f.volume_sell_mw) desc
limit 20
Step 5 — Always bound by date¶
Every query so far has had a WHERE delivery_date_utc = ... clause. That's not stylistic — without it, the view scans the full dim_period range (2020 onward) and the cross-join with active combos explodes. Slow.
If you find yourself omitting the date filter, you'll either time out or end up paying for compute you didn't intend. See Filter and aggregate efficiently.
What's next¶
You've used the generic numera-core 15m view. EWE also has wrapper views (fct_ewe_volume_pwr_*) with EWE-specific filters pre-applied. The data is the same, just pre-filtered.
- If you're migrating an existing report off the EWE wrappers, work through Migrate Your First Query.
- For more analytical patterns, see Compute P&L and net position.
- For natural-language access via Cortex Analyst, see Semantic views.
- For the full column reference, see Numera-core views and EWE views.