This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
I have a model I am building to compare Actual Sales Bookings from Salesforce vs Budget. The dimensional data from our actuals table is very robust as it leverages several key salesforce objects like opportunities and accounts. The plan data, however, is only constructed in excel and at a minimal granularity (Booking Event, Product Family, and Date). To Calculate the Plan Measure, I use the following formula:
Booking PL =
CALCULATE (
SWITCH (
[Selected Calculation],
1, SUM(FCT_PLAN_BOOKINGS[VALUE]),
2, CALCULATE ( SUM(FCT_PLAN_BOOKINGS[VALUE]), DATESQTD ( Periods[Date] ) ),
3, CALCULATE ( SUM(FCT_PLAN_BOOKINGS[VALUE]), DATESYTD ( Periods[Date] ) )
),
TREATAS(
SUMMARIZE(
FCT_SFDC_BOOKINGS,
FCT_SFDC_BOOKINGS[PRODUCT_FAMILY],
FCT_SFDC_BOOKINGS[BOOKING_SUMMARY],
FCT_SFDC_BOOKINGS[BOOKING_DATE]),
FCT_PLAN_BOOKINGS[PRODUCT_FAMILY],
FCT_PLAN_BOOKINGS[CATEGORY],
FCT_PLAN_BOOKINGS[DATE]
)
)
The Issue: When a given product family.booking_summary.date value is blank from the actuals (so effectively $0) , the measure above does not return the total Plan value.
Truncated Data Set ( FCT_PLAN_BOOKINGS)
| Product Family | Date | Category | Value |
| TR - MarketView | 6/1/2021 | Churn | (192,983.60) |
| TR - Datagenic | 6/1/2021 | Churn | (6,077.66) |
Truncated Date Set (FCT_SFDC_BOOKINGS)
| Product Family | Date | Booking_summary | Booking_value |
| TR - MarketView | 6/1/2021 | Churn | (90,961.49) |
Sample Visual
As you can see, because the TR - Dategenic family doesn't have an actual, it filters out the Budget value.
Is there a modeling approach I am missing here?
Here is the current Data Model
I ended up utilizing SQLBI's guide for returning zero.
Creating this measure did the trick:
Booking Value =
VAR FirstBookingValue =
CALCULATE( MIN(FCT_SFDC_BOOKINGS[BOOKING_DATE]), ALLEXCEPT( FCT_SFDC_BOOKINGS, 'FCT_SFDC_BOOKINGS'[OPPORTUNITY_PRODUCT_NAME] ))
VAR LastBookingValue =
CALCULATE( MAX(FCT_SFDC_BOOKINGS[BOOKING_DATE]), REMOVEFILTERS())
VAR CurrentDate = MAX(Periods[Date])
VAR ForceZero = FirstBookingValue <= CurrentDate && CurrentDate <= LastBookingValue
VAR Amt = [Booking AC] + if (ForceZero, 0)
Return
Amt
@rstover_atx You could try replacing your big Treatas expression by these two
TREATAS( VALUES( FCT_SFDC_BOOKINGS[PRODUCT_FAMILY] ), FCT_PLAN_BOOKINGS[PRODUCT_FAMILY] ),
TREATAS( VALUES( FCT_SFDC_BOOKINGS[BOOKING_SUMMARY] ), FCT_PLAN_BOOKINGS[CATEGORY] )
Your TREATAS is incorrect syntactically. The measure should not even be accepted in PBI.
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 35 | |
| 32 | |
| 26 | |
| 21 | |
| 18 |
| User | Count |
|---|---|
| 68 | |
| 37 | |
| 32 | |
| 25 | |
| 23 |