Plain-language questions
Ask for purchase price variance (PPV) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Inventory, purchasing and production
Purchase price variance (PPV) is the difference between what you actually pay for an item and its standard or budget price, multiplied by the quantity bought. A positive variance means you paid more than planned. It shows how much of the movement in margin comes from purchase prices.
(Actual purchase price − standard price) × quantity purchased; as a percentage ÷ (standard price × quantity) × 100%
Acme Groothandel bought 10,000 rolls of packing tape at €1.32 per roll, against a standard price of €1.20. PPV is (€1.32 − €1.20) × 10,000 = €1,200 adverse. Against the standard value of €12,000 that is €1,200 ÷ €12,000 × 100% = 10.0%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
An adverse variance means purchase costs are higher than the cost prices and selling prices were based on. A favourable variance is not always good news: it may come from larger batches that build up stock, or from lower quality. Compare by supplier and product group, and against the standard prices set in the budget.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
SELECT date_trunc('month', po.order_date) AS month,
SUM(pol.quantity * pol.standard_price) AS spend_at_standard,
SUM((pol.unit_price - pol.standard_price) * pol.quantity) AS ppv_amount,
ROUND(100.0 * SUM((pol.unit_price - pol.standard_price) * pol.quantity)
/ NULLIF(SUM(pol.standard_price * pol.quantity), 0), 2) AS ppv_pct
FROM purchase_order_lines pol
JOIN purchase_orders po ON po.po_id = pol.po_id
GROUP BY 1
ORDER BY 1;PPV = SUMX(PurchaseLines, (PurchaseLines[UnitPrice] - PurchaseLines[StandardPrice]) * PurchaseLines[Quantity])
PPV % = DIVIDE([PPV], SUMX(PurchaseLines, PurchaseLines[StandardPrice] * PurchaseLines[Quantity]))In ENABLE
Ask for purchase price variance (PPV) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
For each purchase line, subtract the standard price from the actual price and multiply by the quantity. Add up the lines for a total per month, supplier or product group. Divide by spend at standard price to get a percentage.
With the usual calculation, actual minus standard, a positive variance means you paid more than planned, which is called adverse. A negative variance is favourable. Agree which sign convention you use, because some systems calculate it the other way round.
A standard price is the purchase price set in advance for each item, used to calculate cost prices and the budget. It is usually set once a year, based on contracts and expected price movements. PPV measures how far reality differs from it.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.