A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_URI::$config is deprecated

Filename: core/URI.php

Line Number: 101

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Router::$uri is deprecated

Filename: core/Router.php

Line Number: 127

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$benchmark is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$hooks is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$config is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$log is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$utf8 is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$uri is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$exceptions is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$router is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$output is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$security is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$input is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$lang is deprecated

Filename: core/Controller.php

Line Number: 75

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$load is deprecated

Filename: core/Controller.php

Line Number: 78

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::open($save_path, $name) should either be compatible with SessionHandlerInterface::open(string $path, string $name): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 132

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::close() should either be compatible with SessionHandlerInterface::close(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 290

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::read($session_id) should either be compatible with SessionHandlerInterface::read(string $id): string|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 164

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::write($session_id, $session_data) should either be compatible with SessionHandlerInterface::write(string $id, string $data): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 233

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::destroy($session_id) should either be compatible with SessionHandlerInterface::destroy(string $id): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 313

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Return type of CI_Session_files_driver::gc($maxlifetime) should either be compatible with SessionHandlerInterface::gc(int $max_lifetime): int|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

Filename: drivers/Session_files_driver.php

Line Number: 354

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Session cookie parameters cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 289

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Session ini settings cannot be changed after headers have already been sent

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Session cannot be started after headers have already been sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property Blog::$session is deprecated

Filename: core/Loader.php

Line Number: 1283

Backtrace:

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$benchmark is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$hooks is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$config is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$log is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$utf8 is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$uri is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$exceptions is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$router is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$output is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$security is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$input is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$lang is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$load is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

A PHP Error was encountered

Severity: 8192

Message: Creation of dynamic property CI_Loader::$session is deprecated

Filename: core/Loader.php

Line Number: 931

Backtrace:

File: /var/www/html/application/controllers/Blog.php
Line: 18
Function: view

File: /var/www/html/index.php
Line: 319
Function: require_once

Unit of Measure Normalization For Actionable Pricing Intelligence
Why Unit of Measure Normalization is Critical For Accurate and Actionable Competitive Pricing Intelligence

Why Unit of Measure Normalization is Critical For Accurate and Actionable Competitive Pricing Intelligence

6th Nov, 2023

Praveen Sheethalnath

By Praveen Sheethalnath

Competitive pricing intelligence is pivotal for retailers seeking to analyze their product pricing in relation to competitors. This practice is essential for ensuring that their product range maintains a competitive edge, meeting both customer expectations and market demands consistently.

Product matching serves as a foundational element within any competitive pricing intelligence solution. Products are frequently presented in varying formats across different websites, featuring distinct titles, images, and descriptions. Undertaking this process at a significant scale is highly intricate due to numerous factors. One such complication arises from the fact that products are often displayed with differing units of measurement on various websites.

The Challenge of Varying Units

In certain product categories, retailers often offer the same item in varying volumes, quantities, or weights. For instance, a clothing item might be available as a single piece or in packs of 2 or 3, while grocery brands commonly sell eggs in counts of 6, 12, or 24.

Consider this example: a quick glance might suggest that an 850g pack of Kellogg’s Corn Flakes priced at $5 is a better deal than a 980g pack of Nestle Cornflakes priced at $5.2. However, this assumption can be deceptive. In reality, the latter offers better value for your money, a fact that only becomes evident through price comparisons after standardizing the units.

This issue is particularly relevant due to the prevalence of “shrinkflation,” where brands adjust packaging sizes or quantities to offset inflation while keeping prices seemingly low. When quantities, pack sizes, weight, etc. reduce instead of prices increasing, it’s important that this change is considered while analyzing competitive pricing.

Normalizing Units of Measure

In order to effectively compare prices among different competitors, retailers must standardize the diverse units of measurement they encounter. This standardization (or normalization) is crucial because price comparisons should extend beyond individual product SKUs to accommodate variations in package sizes and quantities. It’s essential to normalize units, ranging from “each” (ea) for individual items to “dozen” (dz) for sets, and from “pounds” (lb), “kilograms” (kg), “liters” (ltr), to “gallons” (gal) for various product types.

For example, a predetermined base unit of measure, such as 100 grams for a specific product like cornflakes, serves as the reference point. The unit-normalized price for any cornflake product would then be the price per 100 grams. In the example provided, this reveals that Kellogg’s is priced at $0.59 per 100 grams, while Nestle is priced at $0.53 per 100 grams.

Various Categories of Unit Normalization

1. Weight Normalization

Retailers frequently feature products with weight measurements expressed in grams (g), kilograms (kg), pounds (lbs), or ounces (oz).

2. Quantity or Pack Size Normalization

Products are also often featured with varying pick sizes or quantities in each SKU.

mounting hardware kit

3. Volume or Capacity Normalization

Products can also vary in volumes or capacities with units like liters (L) or fluid ounces (fl oz).

DataWeave’s Unit Normalized Pricing Intelligence Solution

DataWeave’s highly sophisticated product matching engine can match the same or similar products and normalize their units of measurement, leading to highly accurate and actionable competitive pricing insights. It standardizes different units of measurement, like weight, quantity, and volume, ensuring fair comparisons across similar and exact matched products.

Retailers have the flexibility to view pricing insights either with retailer units or normalized units. This capability empowers retailers and analysts to perform accurate, in-depth analyses of pricing information at a product level.

In some scenarios, analyzing unit normalized pricing reflects pricing trends and competitiveness more accurately than retail price alone. This is particularly true for categories like CPG, where products are sold in diverse units of measure. For instance, in the example shown here, we can view a comparison of price position trends for the category of Fruits and Vegetables based on both retail price and unit price.

The difference is striking: the original retail price based analysis shows a stagnation in price position, whereas unit normalized pricing analysis reflects a more dynamic pricing scenario.

With DataWeave, retailers can specify which units to compare, ensuring that comparisons are made accurately. For example, a retailer can specify that unit price comparisons apply only to 8, 12, or 16-ounce packs, as well as 1 or 3-pound packs, but not to 10 and 25-pound bags. This precision ensures that products are matched correctly, and prices are represented for appropriately normalized units, leading to more accurate pricing insights.

To learn more about this capability, write to us at contact@dataweave.com or visit our website today!

- Praveen Sheethalnath
Praveen is Head of Products at DataWeave, 6th Nov, 2023

AI Artificial Intelligence Data Engineering Discounts Discoverability E Commerce Global Historical pricing analytics India Inflation

Book a Demo