What this view is for
Busopp.item_values_lines provides the numeric values associated with business opportunities.
If:
core_detailstells you what the opportunity ismeta_codestells you how it is categorisedmeta_datestells you when things happen
then item_values_lines tells you how much.
This is the view where pipeline value lives.
A note on “lines” in the CDM
For convinience, in the Common Data Model (CDM), the term lines is used as a version indicator.
For opportunities, this typically means:
- One or more value-bearing records per opportunity
- Values expressed at a meaningful numeric grain
- A structure that remains consistent across Busopp, Order and Invoice
Think of “lines” as value instances, not as physical sales order lines.
Level of detail (grain)
- Multiple rows per opportunity
- One row per value attribute instance
This view is intentionally long and thin, just like meta_codes and meta_dates, but focused purely on numbers.
It is not safe to count rows here — this view exists for aggregation.
What you’ll find in this view
Each row represents a single numeric value with currency context, including:
OBJECT_SEQ– the paired company + opportunity identifierMETA_TYPE– the category of valueATTRIBUTE– the specific value meaning- A numeric value
- Currency context (base, transaction currency, etc.)
No business rules or aggregations are baked in.
Current value attributes
The following META_TYPE / ATTRIBUTE combinations are currently available:
| META_TYPE | ATTRIBUTE |
|---|---|
| SALE | UNIT_PRICE_BASE |
| SALE | UNIT_PRICE_CURR |
| TOTAL | VALUE_BASE |
| TOTAL | VALUE_CURR |
The naming makes currency explicit and avoids ambiguity at the point of use.
How to join this view
Every row includes OBJECT_SEQ, consistent with all other Busopp views.
Always join Busopp.item_values_lines to Busopp.core_details using OBJECT_SEQ.
This ensures values are anchored to the correct opportunity before any aggregation takes place.
Aggregating values (with care)
In most reports, this view is aggregated early into a working meta_values layer.
This is a good and common practice — as long as it’s done deliberately.
Be mindful of currency
When aggregating values:
- Never mix currencies unintentionally
- Group by currency or select a single currency context
- Be clear whether you are working with:
- Base values
- Transaction (current) values
- A converted reporting currency
If totals feel “almost right”, currency is the first thing to check.
Creating a combined value attribute
As with codes and dates, combining META_TYPE and ATTRIBUTE is strongly recommended.
Example (Power Query):
= Table.AddColumn(
Source,
"VALUE_ATTRIBUTE",
each [META_TYPE] & "_" & [ATTRIBUTE],
type text
)
This makes intent explicit and simplifies shaping and pivoting.
Pivoting and shaping values
Once filtered and combined, you can pivot to create a wide, report-friendly values table with:
- One row per opportunity (
OBJECT_SEQ) - One column per value attribute
- Clear separation of base and currency values
This often becomes the foundation for reusable measures.
Things to watch out for
- Don’t sum values across different currencies
- Don’t assume all numeric values should be summed (unit prices vs totals)
- Avoid aggregating the same value more than once in the report flow
A simple sense check: if a value exists at both line level and aggregated level, make sure you’re only using one.
Where this fits in a report build
A typical flow is:
- Start with Busopp.core_details
- Add meta_dates and meta_codes for context
- Join item_values_lines for numeric values
- Aggregate into a working
meta_valueslayer - Build measures on top of the aggregated values
This keeps identity, context, timing and value clearly separated.
Key takeaway
Busopp.item_values_linesis where pipeline value lives — and where the most care is needed.Use it intentionally, respect currency, aggregate once, and it becomes a powerful and flexible foundation for opportunity value reporting.