FAQs - Omni Item Dimensions
Omni Item Dimensions: Overview & Business Value
What Is Omni Item Dimensions?
Omni Item Dimensions is a consolidated data asset that brings together Walmart's store-level Item Dimensions and eCommerce Product Dimensions into a unified view of product information across channels.
For the U.S., Omni Item Dimensions replaces both the existing Item Dimensions and Product Dimensions tables.
The asset connects Walmart Item Numbers (WM_ITEM_NBR) and Catalog Item IDs (CATLG_ITEM_ID) while combining item and product attributes such as merchandise hierarchy, brand, descriptions, physical dimensions, packaging, replenishment information, product status, digital attributes, and other operational characteristics.
By consolidating these attributes into one dataset, Omni Item Dimensions provides a more comprehensive reference for understanding products across Walmart's in-store and eCommerce ecosystems.
Why Does It Matter?
Omni Item Dimensions simplifies access to store and eCommerce product information by consolidating key attributes into a single dataset. This unified structure provides a consistent foundation for connecting item information across channels, streamlining data integration, and supporting more comprehensive omnichannel analysis.
This enhancement enables suppliers and Category Advisors to:
- Simplify Data Integration: Access store and eCommerce item attributes through a single dataset, reducing the need to maintain separate dimension tables.
- Improve Omnichannel Visibility: Connect Walmart Item Numbers and Catalog Item IDs to support more comprehensive analysis across store and digital channels.
- Enhance Reporting Consistency: Use common product attributes, identifiers, and merchandise hierarchies across reporting and analytical workflows.
- Expand Product Insights: Access a broader set of attributes covering product characteristics, digital eligibility, packaging, replenishment, and operational information.
- Support Better Decision-Making: Enrich sales, inventory, fulfillment, and other performance datasets with consistent item information to improve assortment, merchandising, and supply-chain analysis.
How Does Omni Item Dimensions Differ from the Existing Tables?
| Market | Existing Data Assets | New Data Asset | What Changes |
|---|---|---|---|
| United States | Item Dimensions + Product Dimensions | Omni Item Dimensions | Consolidates store and eCommerce item/product attributes into one unified dataset, replacing both existing tables. |
Migration and Integration Guidance
Customers transitioning to Omni Item Dimensions should review their existing data integrations, identifier relationships, and reporting logic to ensure compatibility with the new table structure.
1. Identifiers and Relationships
1.1 What Is the Difference Between WM_ITEM_NBR and CATLG_ITEM_ID?
| Identifier | Represents | Native To |
|---|---|---|
WM_ITEM_NBR (Walmart Item Number) |
A Walmart item used in store and pickup/delivery operations | Store sales, store inventory, POS, DC inventory, forecast, modular, purchase orders |
CATLG_ITEM_ID (Catalog Item ID) |
A product in the Walmart.com catalog | eCommerce sales, eCommerce in-stock, product content |
Store transactions are recorded by WM_ITEM_NBR. eCommerce transactions are recorded by CATLG_ITEM_ID. Omni Item Dimensions connects the two.
1.2 What Is the Relationship Between Them?
For active records:
- Most
WM_ITEM_NBRvalues map to oneCATLG_ITEM_ID. - Several Walmart items may be sold under one catalog product.
- Each
WM_ITEM_NBRmaps to oneCATLG_ITEM_IDat a time.
The relationship can appear many-to-many in two situations:
- Inactive records are included.
- Records from more than one daily snapshot are combined.
1.3 Can a WM_ITEM_NBR Change Its CATLG_ITEM_ID?
Yes. When a catalog record is re-indexed, a Walmart item can be linked to a new Catalog Item ID. The new link becomes active, and the previous link is retired.
| Snapshot | WM_ITEM_NBR | CATLG_ITEM_ID | Status |
|---|---|---|---|
| Earlier | 100000001 |
20000000001 |
Retired |
| Later | 100000001 |
20000000002 |
Active |
If you upsert each snapshot on WM_ITEM_NBR + CATLG_ITEM_ID, the retired row is never removed, and the item appears to have two Catalog Item IDs.
1.4 Does the Relationship Differ by Item Type?
| Item Type | Behavior |
|---|---|
| Store-only items | No catalog product. CATLG_ITEM_ID = -999 |
| Online-only catalog products without a Walmart item | WM_ITEM_NBR = -999 |
| Shared items (sold online and in store) | Have both identifiers |
| Bundles | Included as catalog products |
| Variants | Included as catalog products |
1.5 Which Field Tells Me a Mapping Is Active?
ITEM_STATUS_CD describes the lifecycle status of the item itself. For example, deleted items have status D.
It is not a mapping indicator. Use it only if your reporting needs to separate active and discontinued items.
2. Grain and Primary Key
2.1 What Is the Grain of Omni Item Dimensions?
One row per item-to-catalog mapping, per region and operating company, plus the persona keys below.
Item hierarchy and attributes are stored at the combined WM_ITEM_NBR + CATLG_ITEM_ID level.
2.2 What Is the Primary Key?
| Key Column | Supplier | Category Advisor | Notes |
|---|---|---|---|
CATLG_ITEM_ID |
Yes | Yes | -999 when there is no catalog product |
WM_ITEM_NBR |
Yes | Yes | -999 when there is no Walmart item |
GEO_REGION_CD |
Yes | Yes | Always filter or join on region |
OP_CMPNY_CD |
Yes | Yes | Include when present on both sides |
SUPPLIER_HASH_ID |
Yes | Yes | Identifies the supplier that owns the item. Category Advisor data contains many suppliers. |
2.3 Is the Primary Key Unique Across History?
No. The key is unique within a single daily snapshot.
Across snapshots, the same WM_ITEM_NBR can appear with different CATLG_ITEM_ID values.
3. Loading the Table
3.1 How Should I Ingest Omni Item Dimensions?
| Approach | Recommendation |
|---|---|
| Current-state table | Recommended. Replace your copy with each daily snapshot. |
| Snapshot history | Store each snapshot with a snapshot date. Join each fact row to the snapshot for its date. |
| MERGE / UPSERT | Merge on the full primary key and delete rows that are no longer in the latest snapshot. Otherwise, retired mappings build up over time. |
Upsert on WM_ITEM_NBR + CATLG_ITEM_ID only |
Avoid. Retired mappings are never removed. |
3.2 Should I Keep a Current-State Table or a History?
Use a current-state table for joins and reporting.
Keep a snapshot history only if you need point-in-time item attributes, such as the hierarchy an item belonged to last year.
4. Joining Your Datasets
4.1 What Are the Join Conditions?
Always join on all identifiers shared by the fact table and the dimension, plus region, operating company, and supplier.
Supplier Persona: Item and Catalog Grain Facts
ON f.wm_item_nbr = d.wm_item_nbr
AND f.catlg_item_id = d.catlg_item_id
AND f.geo_region_cd = d.geo_region_cd
AND f.op_cmpny_cd = d.op_cmpny_cd
AND f.supplier_hash_id = d.supplier_hash_id
Category Advisor Persona: Item and Catalog Grain Facts
ON f.wm_item_nbr = d.wm_item_nbr
AND f.catlg_item_id = d.catlg_item_id
AND f.geo_region_cd = d.geo_region_cd
AND f.op_cmpny_cd = d.op_cmpny_cd
The join keys are the same for both personas. The difference is scope: Category Advisor tables contain items from every supplier in the category.
4.2 Which Join Should I Use for Each Dataset?
| Dataset | Native Grain | Join Keys | Prepare the Dimension | Join Type |
|---|---|---|---|---|
| Store Sales | Transaction line by date | WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| Store Inventory | Store, WM_ITEM_NBR, date |
WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| POS, returns, markdowns | Store, WM_ITEM_NBR, date |
WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| DC Inventory | DC, WM_ITEM_NBR, date |
WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| Omni Sales | WM_ITEM_NBR, channel, date |
WM_ITEM_NBR + CATLG_ITEM_ID + region + company + supplier |
Active records only | LEFT |
| eCommerce (catalog grain) | CATLG_ITEM_ID, date |
CATLG_ITEM_ID + region + company + supplier |
One row per CATLG_ITEM_ID (SQL-2) |
LEFT |
| Forecast | Store, WM_ITEM_NBR, date |
WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| Modular | Item placement | WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
| Purchase Orders | PO line | WM_ITEM_NBR + region + company + supplier |
One row per WM_ITEM_NBR |
LEFT |
4.3 How Do I Get CATLG_ITEM_ID for eCommerce Tables That Now Use WM_ITEM_NBR?
Join on WM_ITEM_NBR to the deduplicated current dimension and read CATLG_ITEM_ID from it.
Do not assume a one-to-one relationship without the deduplication step.
4.4 How Do I Join a Table That Only Has CATLG_ITEM_ID?
One Catalog Item ID can map to several Walmart items, so a direct join returns several rows per fact row.
Use one of the following approaches:
- Report at catalog grain: Reduce the dimension to one row per
CATLG_ITEM_ID, then join. This is the recommended approach. - Report at Walmart item grain: Join to all mapped items, then follow the metric rules in section 4.5.
4.5 How Do eCommerce Metrics Roll Up to Walmart Items?
| Metric Type | Example | How It Maps to WM_ITEM_NBR | Can I Sum Across Items? |
|---|---|---|---|
| Copied | Product content score | The same value is repeated on every linked item. | No. Report at CATLG_ITEM_ID. |
| Allocated | eCommerce sales and inventory, after migration | Split across linked items with a daily ratio. | Yes. Values add back to the catalog total. |
4.6 Modular and Purchase Order Data Describe Physical Items. Anything Special?
Yes. A modular placement or purchase-order line describes a physical item.
If you join it to several catalog products, it is duplicated.
Always join modular and purchase-order data to a one-row-per-WM_ITEM_NBR view, and confirm that your row count is unchanged after the join.
5. Preventing Duplicated Metrics
5.1 Why Do My Totals Increase After Joining to Omni Item Dimensions?
The join returned more than one dimension row for some fact rows.
For example, a $100 sales row that matches two dimension rows becomes $200 when summed.
Common causes:
- Joining on
WM_ITEM_NBRonly - Missing the
ITEM_STATUS_CD = FALSEfilter - Leaving out
GEO_REGION_CD,OP_CMPNY_CD, orSUPPLIER_HASH_ID - Retired mappings left in your persisted table
- Unnesting an array column before aggregating
5.2 How Do I Prevent It?
- Aggregate first, enrich second. Calculate sales, units, trips, inventory, forecast, and purchase-order quantities at the fact table's own grain, then add item attributes.
- Deduplicate the dimension to one row per join key.
- Join on all keys listed in section 4.1.
- Reconcile totals before and after the join (SQL-4).
5.3 Can I Use MAX or MIN to Pick Attributes?
Not for descriptive attributes such as brand, hierarchy, buyer, or description.
MAX and MIN choose each column separately, so one output row can combine values from different records.
Instead, take all attributes from a single ranked row.
Safe to aggregate:
- Additive measures at their own grain
- Distinct counts of keys
- Lists of values, such as manufacturer IDs, shown as a list
6. Preventing Lost Records
6.1 Can the Join Remove Valid Records?
Yes, if you use an INNER JOIN.
Any fact row without a matching dimension row is dropped, and totals are understated.
6.2 What Should I Do Instead?
- Use a
LEFT JOINfrom the fact table to the dimension. - Label unmatched rows Unmapped instead of dropping them.
- Track the share of sales that is unmapped over time.
- Use an
INNER JOINonly when you specifically need attributed items, and report how many rows were excluded.
6.3 Why Does a Sales Record Have No Matching Dimension Record?
Possible reasons include:
| Reason | What to Do |
|---|---|
| Intentionally excluded item | Keep as Unmapped. |
| The item reached the fact table before the dimension | Keep. It should match in a later load. |
| The mapping was retired | Keep. Join to the snapshot for the fact date if you need historical attributes. |
| Data issue | Report it through your standard support channel with WM_ITEM_NBR, CATLG_ITEM_ID, and date. |
7. Coverage
7.1 Why Are Some Items in the Legacy Item Dimensions Missing from Omni Item Dimensions?
Some items are excluded intentionally:
| Category | Behavior |
|---|---|
| Regulated pharmacy items | Excluded by business rule |
| Items with a deleted status | Not carried forward |
| Inactive mappings | Excluded by DV_DEL_IND = FALSE |
7.2 Why Does Omni Item Dimensions Contain Items the Legacy Tables Did Not Have?
Omni Item Dimensions adds shared online/in-store items.
Small increases in metrics after migration are expected because more items are covered.
