Dimension Catalogue
This page documents all 43 dimensions in the merged Numera semantic model. Dimensions provide descriptive context for fact table measures. Each dimension table has a surrogate integer primary key used as a foreign key in fact tables — except for dim_current_date (single-row, no FK joins), dim_metric_date (keyed on the date itself), dim_version, and dim_numera_version.
Surrogate key naming convention: The primary key column is the table name in UPPER_CASE with _ID suffix, e.g. DIM_DEAL_ATTRIBUTE_ID. Fact table foreign key columns use the same name.
Placeholder rows: Every dimension with a surrogate key includes a row with ID = 0 representing "Unknown" or "Not Applicable". Always filter != 0 to exclude these from aggregations.
Deal Dimensions
dim_deal_attribute
Core deal attributes used for slicing and grouping P&L, risk, and volume facts.
| Attribute |
Value |
| Primary key |
DIM_DEAL_ATTRIBUTE_ID |
| Column |
Description |
PORTFOLIO |
Portfolio name |
EXTERNAL_PORTFOLIO |
External portfolio label |
MANAGEMENT |
Management grouping |
INSTRUMENT |
Product type (e.g. GAS-PHYS, POWER-FIN) |
INSTRUMENT_SUB_TYPE |
Sub-type classification |
BASE_INSTRUMENT |
Base instrument type |
INSTRUMENT_CLASS |
Instrument class |
BUY_SELL |
Direction: Buy or Sell |
EXTERNAL_BUSINESS_UNIT |
External BU name |
BROKER |
Broker name |
COMMODITY |
Commodity (GAS, POWER, etc.) |
MARKET |
Market classification |
ASSET_TYPE |
Asset classification |
TRAN_TYPE |
Transaction type |
TRAN_STATUS |
Current transaction status |
dim_deal_sub_attribute
Side-level deal attributes for multi-leg deals. Each leg (physical or financial) of a deal maps to one sub-attribute row.
| Attribute |
Value |
| Primary key |
DIM_DEAL_SUB_ATTRIBUTE_ID |
| Column |
Description |
INDEX_ID |
Index identifier |
PARAM_SEQ_ID |
Side sequence identifier within the deal |
PROJ_INDEX |
Projection index name |
COMMODITY |
Commodity for this side |
MARKET |
Market for this side |
FIX_FLOAT |
Fixed or floating pricing |
UNIT |
Volume unit |
PRICE_UNIT |
Price unit |
PAY_REC |
Pay or receive indicator |
SETTLEMENT_TYPE |
Settlement method |
DELIVERY_TYPE |
Delivery method |
CFLOW_TYPE |
Cash flow type |
CURRENCY |
Currency |
PRICE_COMPLEXITY |
Pricing complexity flag |
INDEX_MULTIPLIER |
Index multiplier factor |
FLOAT_SPD |
Float spread |
dim_deal_physical
Physical leg attributes for deals with physical delivery.
| Attribute |
Value |
| Primary key |
DIM_DEAL_PHYSICAL_ID |
| Column |
Description |
PHYSICAL_PARAM_SEQ_ID |
Physical side sequence ID |
PROJ_INDEX_ID |
Projection index ID |
PROJ_INDEX |
Projection index name |
COMMODITY |
Commodity |
MARKET |
Market |
FIX_FLOAT |
Fixed or floating |
UNIT |
Volume unit |
PRICE_UNIT |
Price unit |
PAY_REC |
Pay or receive |
DELIVERY_TYPE |
Delivery method |
CFLOW_TYPE |
Cash flow type |
CURRENCY |
Currency |
PRICE_TYPE |
Price type |
HAS_PHYSICAL_SIDE |
Flag: has physical leg |
PARAM_SEQ_ID |
Parameter sequence ID |
SETTLEMENT_TYPE |
Settlement method |
PRICE_COMPLEXITY |
Pricing complexity |
INDEX_MULTIPLIER |
Index multiplier |
FLOAT_SPD |
Float spread |
dim_deal_financial
Financial leg attributes for deals with financial settlement.
| Attribute |
Value |
| Primary key |
DIM_DEAL_FINANCIAL_ID |
Columns mirror dim_deal_physical with FINANCIAL_PARAM_SEQ_ID as the key column and HAS_FINANCIAL_SIDE in place of HAS_PHYSICAL_SIDE.
dim_tran_info
Wide junk dimension — columns are deployment-specific transaction info fields configured per environment. The column list is empty in the semantic model because it varies by deployment.
| Attribute |
Value |
| Primary key |
DIM_TRAN_INFO_ID |
Note
The actual columns in dim_tran_info depend on what transaction info fields are configured in your Endur installation. Refer to your local deployment documentation for the column list.
dim_tran_status
Transaction status values and their P&L relevance flag.
| Attribute |
Value |
| Primary key |
DIM_TRAN_STATUS_ID |
| Column |
Description |
TRAN_STATUS |
Status name (e.g. Validated, Cancelled, Matured) |
IS_PNL_RELEVANT |
Whether this status contributes to P&L |
dim_tran_info_type
Metadata about each tran info field type.
| Attribute |
Value |
| Primary key |
DIM_TRAN_INFO_TYPE_ID |
| Column |
Description |
TRAN_INFO_TYPE |
Field name |
DATA_TYPE |
Data type (string, int, etc.) |
APPLYS_TO |
Which object type this applies to |
DEFAULT_VALUE |
Default value |
dim_exchange_traded_product
Exchange-traded contract metadata (futures, options).
| Attribute |
Value |
| Primary key |
DIM_EXCHANGE_TRADED_PRODUCT_ID |
| Column |
Description |
CONTRACT_CODE |
Exchange contract code |
EXPIRY_DATE |
Contract expiry date |
FIRST_TRADE_DATE |
First tradeable date |
LAST_TRADE_DATE |
Last tradeable date |
FIRST_DELIVERY_DATE |
First delivery date |
LAST_DELIVERY_DATE |
Last delivery date |
dim_ins_option
Option instrument attributes.
| Attribute |
Value |
| Primary key |
DIM_INS_OPTION_ID |
| Column |
Description |
OPTION_TYPE |
Option type |
OPTION_STATUS |
Option status |
OPTION_EXERCISE_METHOD |
Exercise method (European, American, etc.) |
PUT_CALL |
Put or call |
STRIKE |
Strike price |
Party Dimensions
dim_party_internal
Internal business units and legal entities (EWE's own trading entities).
| Attribute |
Value |
| Primary key |
DIM_PARTY_INTERNAL_BU_LE_ATTRIBUTE_ID |
| Column |
Description |
BUNIT_ID |
Business unit ID |
LENTITY_ID |
Legal entity ID |
BUNIT_NAME |
Business unit name |
LENTITY_NAME |
Legal entity name |
BUNIT_NAME_LONG |
Business unit long name |
LENTITY_NAME_LONG |
Legal entity long name |
BUNIT_COUNTRY |
Business unit country |
LENTITY_COUNTRY |
Legal entity country |
BUNIT_INT_EXT |
Internal/external flag for BU |
LENTITY_INT_EXT |
Internal/external flag for LE |
LEI_CODE |
Legal Entity Identifier |
PARTY_LONG_NAME |
Combined long party name |
GROUP_NAME |
Group/parent name |
dim_party_external
External counterparties (business unit and legal entity pairs).
| Attribute |
Value |
| Primary key |
DIM_PARTY_EXTERNAL_BU_LE_ATTRIBUTE_ID |
Same columns as dim_party_internal. The distinction is structural: internal rows are EWE's own entities; external rows are counterparties.
dim_party_agreement
Party agreement attributes and netting terms. This is an SCD2 dimension — each row has validity dates to capture agreement changes over time.
| Attribute |
Value |
| Primary key |
DIM_PARTY_AGREEMENT_ID |
| SCD type |
SCD2 |
| Column |
Description |
PARTY_AGREEMENT_ID |
Business agreement identifier |
PARTY_AGREEMENT_VERSION |
Version number |
PARTY_AGREEMENT_NAME |
Agreement name |
PARTY_AGREEMENT_TYPE_ID |
Agreement type ID |
AGREEMENT_CONDITION_ID |
Condition identifier |
CONTRACT_DRAFT_DATE |
Draft date |
CONTRACT_SIGN_DATE |
Signing date |
COV_START_DATE |
Coverage start date |
COV_END_DATE |
Coverage end date |
HAS_NETTING_FLAG |
Netting agreement flag |
HAS_AMEND_FLAG |
Amendment flag |
HAS_MASTER_NETTING_AGREEMENT_FLAG |
Master netting agreement flag |
PARTY_AGREEMENT_TYPE |
Agreement type name |
_VALID_FROM |
SCD2 row valid from |
_VALID_TO |
SCD2 row valid to |
_CURRENT |
SCD2 current row flag |
dim_party_agreement_attribute (EWE)
EWE-specific party agreement attribute dimension — netting and collateral flags per party agreement. Defined in the EWE extension file.
| Attribute |
Value |
| Primary key |
DIM_PARTY_AGREEMENT_ATTRIBUTE_ID |
| Source |
EWE extension |
| Column |
Description |
PARTY_ID |
Party identifier |
PARTY_AGREEMENT_ID |
Agreement identifier |
PARTY_AGREEMENT_NAME |
Agreement name |
HAS_CLOSE_OUT_NETTING |
Close-out netting enabled |
HAS_PAYMENT_NETTING |
Payment netting enabled |
COLLATERAL_AGREEMENT_ID |
Linked collateral agreement ID |
COLLATERAL_AGREEMENT_NAME |
Linked collateral agreement name |
HAS_CROSS_COMMODITY_NETTING |
Cross-commodity netting enabled |
Location Dimensions
dim_delivery_location
Physical delivery points for gas and power.
| Attribute |
Value |
| Primary key |
DIM_DELIVERY_LOCATION_ID |
| Column |
Description |
LOCATION |
Location name |
GAS_PIPELINE |
Gas pipeline name |
GAS_ZONE |
Gas zone |
CONTROL_AREA |
Power control area |
SUB_CONTROL_AREA |
Power sub-control area |
REGION |
Regional grouping |
PWR_PRODUCT |
Power product type |
PRODUCT |
Product name |
dim_point_of_delivery_location
Point of delivery (POD) for schedule and volume data.
| Attribute |
Value |
| Primary key |
DIM_POINT_OF_DELIVERY_LOCATION_ID |
| Column |
Description |
LOCATION_ID |
Location identifier |
LOCATION_NAME |
Location name |
POWER_CONTROL_AREA |
Power control area |
POWER_SUB_CONTROL_AREA |
Power sub-control area |
POWER_REF_SOURCE |
Reference source |
GAS_PIPELINE |
Gas pipeline |
GAS_ZONE |
Gas zone |
TIME_ZONE |
Time zone |
IS_ACTIVE |
Active flag |
dim_point_of_receipt_location
Point of receipt (POR) for schedule and volume data. Same structure as dim_point_of_delivery_location with primary key DIM_POINT_OF_RECEIPT_LOCATION_ID.
Date and Time Dimensions
dim_date
Full calendar dimension with day, week, month, quarter, and year attributes.
| Attribute |
Value |
| Primary key |
DIM_DATE_ID |
| Column |
Description |
DATE_KEY |
Date as integer (YYYYMMDD) |
DAY_OF_YEAR |
Day of year (1–366) |
WEEK_OF_YEAR |
ISO week number |
DAY_OF_WEEK |
Day of week (1 = Monday) |
WEEK_DAY_SHORT_DESC |
Weekday short name (Mon, Tue, …) |
MONTH_OF_YEAR |
Month number (1–12) |
MONTH_SHORT_DESC |
Month short name (Jan, Feb, …) |
MONTH_DESC |
Month full name |
FIRST_DAY_OF_MONTH |
First day of the month |
LAST_DAY_OF_MONTH |
Last day of the month |
QUARTER_OF_YEAR |
Quarter (1–4) |
QUARTER_SHORT_DESC |
Quarter label (Q1, Q2, …) |
YEAR_KEY |
Year as integer |
FIRST_DAY_OF_YEAR |
First day of the year |
LAST_DAY_OF_YEAR |
Last day of the year |
dim_month
Month-level reference dimension for delivery month joins.
| Attribute |
Value |
| Primary key |
DIM_MONTH_ID |
| Column |
Description |
MONTH_OF_YEAR |
Month number (1–12) |
QUARTER_OF_YEAR |
Quarter (1–4) |
YEAR_NUM |
Year |
MONTH_SHORT_DESC |
Month short name |
MONTH_DESC |
Month full name |
FIRST_DAY_OF_MONTH |
First day of month |
LAST_DAY_OF_MONTH |
Last day of month |
YYYYMM |
Period key as YYYYMM integer |
YYYYMON |
Period as YYYYMON string (e.g. 2026MAR) |
Facts that have delivery month joins reference dim_month multiple times under different alias keys: DIM_TRADE_MONTH_ID, DIM_DELIVERY_START_MONTH_ID, DIM_DELIVERY_END_MONTH_ID, and DIM_PYMT_MONTH_ID.
dim_metric_date
Valuation dates with business-oriented attributes. Unlike other dimensions, the primary key is the date itself (METRIC_DATE), not a surrogate integer.
| Attribute |
Value |
| Primary key |
METRIC_DATE (date column, not a surrogate ID) |
| Column |
Description |
IS_LATEST |
Flag for the most recent metric date |
SLICER_STRING |
Display string for date slicers |
DAYS_FROM_LATEST_METRIC_DATE |
Days offset from the latest date |
METRIC_YEAR |
Year |
METRIC_MONTH_LONG_DESC |
Month long description |
METRIC_MONTH_NUM |
Month number |
METRIC_DAY_OF_WEEK |
Day of week |
PBI_UPDATE_SCALAR |
Power BI update scalar value |
LAST_UPDATE |
Last updated timestamp |
RETENTION_LEVEL |
Data retention tier |
dim_current_date
Single-row utility dimension exposing the current Numera system dates. There is no primary key — this dimension is not joined via a FK; it is cross-joined or selected directly.
| Column |
Description |
METRIC_DATE |
Today's metric date |
PREV_METRIC_DATE |
Previous metric date |
EOLM_METRIC_DATE |
End-of-last-month metric date |
EOLQ_METRIC_DATE |
End-of-last-quarter metric date |
EOLY_METRIC_DATE |
End-of-last-year metric date |
Metric and Scenario Dimensions
dim_metric_scenario
Valuation scenarios combining reval type and stress test scenario.
| Attribute |
Value |
| Primary key |
DIM_METRIC_SCENARIO_ID |
| Column |
Description |
REVAL_TYPE |
Revaluation type name |
SCENARIO_ID |
Scenario identifier |
SCENARIO_NAME |
Scenario name |
SCENARIO_CURRENCY |
Scenario base currency |
dim_reval_type
Revaluation type reference (base mark, stress, etc.).
| Attribute |
Value |
| Primary key |
DIM_REVAL_TYPE_ID |
| Column |
Description |
REVAL_TYPE |
Reval type name |
IS_DEFAULT_REVAL_TYPE |
Flag for the standard base-mark reval type |
Portfolio Dimensions
dim_portfolio
Portfolio definitions with type classification.
| Attribute |
Value |
| Primary key |
DIM_PORTFOLIO_ID |
| Column |
Description |
PORTFOLIO_ID |
Portfolio business identifier |
PORTFOLIO |
Portfolio name |
PORTFOLIO_TYPE |
Portfolio type classification |
dim_pfolio
Aliased portfolio dimension. The majority of core facts reference portfolios via DIM_PFOLIO_ID (joining to dim_pfolio) rather than DIM_PORTFOLIO_ID (joining to dim_portfolio). dim_pfolio carries only the PFOLIO_NAME column; use dim_portfolio when you need the full portfolio attribute set.
| Attribute |
Value |
| Primary key |
DIM_PFOLIO_ID |
| Column |
Description |
PFOLIO_NAME |
Portfolio name |
Index and Price Dimensions
dim_index_attribute
Price index attributes — the current, non-deprecated index dimension.
| Attribute |
Value |
| Primary key |
DIM_INDEX_ATTRIBUTE_ID |
| Column |
Description |
INDEX_NAME |
Index name |
IDX_MARKET |
Index market |
IDX_GROUP |
Index group |
IDX_SUBGROUP |
Index sub-group |
IDX_PURPOSE |
Index purpose |
CURRENCY |
Index currency |
IDX_INDEX_TYPE |
Index type |
PRICE_BAND |
Price band |
REF_SOURCE |
Reference source name |
COVERAGE_START_DATE |
Coverage start |
COVERAGE_END_DATE |
Coverage end |
END_DATE |
End date |
GPT_LABEL |
Gridpoint label |
dim_index (deprecated)
Deprecated
dim_index is deprecated. Use dim_index_attribute instead. Existing facts that reference DIM_INDEX_ID will continue to work, but new queries should join to dim_index_attribute via DIM_INDEX_ATTRIBUTE_ID.
SCD2 dimension for index versions. Columns include INDEX_NAME, IDX_MARKET, IDX_GROUP, IDX_SUBGROUP, IDX_INDEX_TYPE, PURPOSE, STATUS, CURRENCY, PRICE_BAND, REF_SOURCE, TIME_ZONE_ID, and SCD2 fields _VALID_FROM, _VALID_TO, _CURRENT.
dim_index_gpt (deprecated)
Deprecated
dim_index_gpt is deprecated. Use dim_index_attribute instead.
SCD2 gridpoint-level dimension. Columns include INDEX_NAME, GPT_ID, NAME, START_DATE, END_DATE, START_TIME, END_TIME, DELTA_SHIFT, and SCD2 fields _VALID_FROM, _VALID_TO, _CURRENT.
dim_ref_source
Reference source (data provider) lookup.
| Attribute |
Value |
| Primary key |
DIM_REF_SOURCE_ID |
| Column |
Description |
REF_SOURCE |
Source name |
Volume Dimensions
dim_volume_type
Volume type classifications used in schedule and volume facts.
| Attribute |
Value |
| Primary key |
DIM_VOLUME_TYPE_ID |
| Column |
Description |
VOLUME_TYPE |
Volume type name |
VOLUME_TYPE_GAS |
Gas-specific classification |
VOLUME_TYPE_PWR |
Power-specific classification |
IS_BEST_AVAILABLE |
Best-available data flag |
dim_volume_15m_shape
Shape codes for 15-minute volume profiles.
| Attribute |
Value |
| Primary key |
DIM_VOLUME_15M_SHAPE_ID |
| Column |
Description |
VOLUME_SHAPE |
Shape code name |
Fee and Payment Dimensions
dim_payment
Payment event attributes.
| Attribute |
Value |
| Primary key |
DIM_PAYMENT_ID |
| Column |
Description |
CFLOW_TYPE |
Cash flow type |
CURRENCY |
Currency |
EVENT_TYPE |
Event type |
EVENT_SOURCE |
Event source |
SETTLEMENT_TYPE |
Settlement method |
VALUE_STATUS |
Value status |
dim_fee_def
Fee definition attributes. SCD2 — changes to fee definitions generate new rows with validity dates.
| Attribute |
Value |
| Primary key |
DIM_FEE_DEF_ID |
| SCD type |
SCD2 |
| Column |
Description |
FEE_DEF_ID |
Fee definition business ID |
FEE_DEF_VERSION |
Definition version |
FEE_LONG_NAME |
Full fee name |
FEE_SHORT_NAME |
Short fee name |
CFLOW_TYPE |
Cash flow type |
FEE_CALC_TYPE |
Calculation type |
FEE_CALC_UNIT |
Calculation unit |
PRICING_FUNCTION |
Pricing function |
VOLUME_TYPE |
Volume type |
IS_ACTIVE |
Active flag |
IS_ACCRUED_MTM |
Accrued mark-to-market flag |
_VALID_FROM |
SCD2 valid from |
_VALID_TO |
SCD2 valid to |
_CURRENT |
SCD2 current row flag |
dim_broker_fee
Broker fee details per deal.
| Attribute |
Value |
| Primary key |
DIM_BROKER_FEE_ID |
| Column |
Description |
BROKER |
Broker name |
PARTY_BROKER_INFO |
Party broker info |
CURRENCY |
Fee currency |
PROV_STATUS |
Provision status |
PROV_TYPE |
Provision type |
BROKER_UNIT_ID |
Broker unit identifier |
RESERVED_CURRENCY |
Reserved currency |
USING_FEE_DEFINITION |
Fee definition reference |
dim_document
Settlement document and STP status attributes.
| Attribute |
Value |
| Primary key |
DIM_DOCUMENT_ID |
| Column |
Description |
IS_AUTHORIZED |
Document authorized flag |
IS_DOCUMENT_SENT |
Document sent flag |
DOC_TYPE |
Document type |
DOC_STATUS |
Current document status |
LAST_DOC_STATUS |
Previous document status |
STLDOC_DEF |
Settlement document definition |
STLDOC_TEMPLATE |
Settlement template |
STP_STATUS |
Straight-through processing status |
dim_keep_whole
Keep-whole contract attributes.
| Attribute |
Value |
| Primary key |
DIM_KEEP_WHOLE_ID |
| Column |
Description |
KEEP_WHOLE_CATEGORY |
Category |
CALC_TYPE |
Calculation type |
BUYER_SELLER |
Buyer or seller |
TAX_LOCATION |
Tax location |
VOLUME_CALC_PERIOD |
Volume calculation period |
TOLERANCE |
Tolerance value |
TOLERANCE_TYPE |
Tolerance type |
VOLUME_TYPE |
Volume type |
dim_settle_profile
High cardinality — likely replacement
dim_settle_profile is flagged in the semantic model as "high cardinality — likely to be replaced by a fact model." Avoid building new reports that depend on this dimension; prefer fct_settle_deal for settlement data.
Settlement profile per deal. Primary key: DIM_SETTLE_PROFILE_ID. Columns: DEAL_ID, TRADE_DATE, PROFILE_PYMT_DATE, PRICE_SIGN, VOLUME, TOTAL_PROFILE_PRICE.
Reference and Utility Dimensions
dim_reference
Generic reference/category lookup.
| Attribute |
Value |
| Primary key |
DIM_REFERENCE_ID |
| Column |
Description |
REFERENCE |
Reference value |
dim_currency
Currency codes.
| Attribute |
Value |
| Primary key |
DIM_CURRENCY_ID |
| Column |
Description |
CURRENCY |
Currency code (EUR, USD, GBP, …) |
dim_unit
Units of measure.
| Attribute |
Value |
| Primary key |
DIM_UNIT_ID |
| Column |
Description |
UNIT |
Unit name (MWh, MMBtu, MW, …) |
UNIT_TYPE |
Unit type classification |
dim_calendar
Trading calendar reference.
| Attribute |
Value |
| Primary key |
DIM_CALENDAR_ID |
| Column |
Description |
CALENDAR |
Calendar name |
IS_DEFAULT_CALENDAR |
Default calendar flag |
dim_version
Numera deployment version history.
| Attribute |
Value |
| Primary key |
None (utility dimension) |
| Column |
Description |
VERSION |
Version string |
DATABASE_NAME |
Database name |
IS_LIVE |
Live environment flag |
CREATION_TIME |
Version creation time |
VERSION_MAJOR |
Major version number |
VERSION_MINOR |
Minor version number |
VERSION_PATCH |
Patch version number |
dim_numera_version
Current Numera version (single row per deployment).
| Attribute |
Value |
| Primary key |
None (utility dimension) |
| Column |
Description |
NUMERA_VERSION |
Numera version string |
CREATION_TIME |
Version creation timestamp |
Volatility Dimensions
dim_volatility
Volatility surface reference.
| Attribute |
Value |
| Primary key |
DIM_VOLATILITY_ID |
| Column |
Description |
VOL_NAME |
Volatility surface name |
INDEX_NAME |
Underlying index name |
DEF_TYPE |
Definition type |
VOL1_ID |
Primary volatility surface ID |
VOL2_ID |
Secondary volatility surface ID |
SQL Join Example
The standard pattern for joining a dimension to a fact table: LEFT JOIN on the surrogate key, filtering != 0 to exclude placeholder rows.
-- Total P&L by portfolio and instrument for the latest metric date
SELECT
d.portfolio,
d.instrument,
d.commodity,
pi.bunit_name AS internal_bu,
pe.lentity_name AS counterparty,
SUM(f.pnl_ltd) AS total_pnl
FROM fct_pnl f
LEFT JOIN dim_deal_attribute d
ON f.dim_deal_attribute_id = d.dim_deal_attribute_id
LEFT JOIN dim_party_internal pi
ON f.dim_party_internal_bu_le_attribute_id = pi.dim_party_internal_bu_le_attribute_id
LEFT JOIN dim_party_external pe
ON f.dim_party_external_bu_le_attribute_id = pe.dim_party_external_bu_le_attribute_id
WHERE f.metric_date = CURRENT_DATE - 1
AND d.dim_deal_attribute_id != 0 -- Exclude placeholder row
GROUP BY 1, 2, 3, 4, 5
ORDER BY total_pnl DESC
Key rules:
- Always use
LEFT JOIN — INNER JOIN can silently drop fact rows whose dimension key is 0.
- Filter
WHERE dim_*_id != 0 to exclude unknown/not-applicable rows from groupings.
- Apply
metric_date filters on the fact table first for performance.
- Join on the primary key column name exactly as listed in this catalogue — column names are case-insensitive in Snowflake but must match the FK column name in the fact.
See Also