Forum Discussion
Help with Circular Dependency
- 4 years ago
I think you can avoid this by eliminating the context transition induced by CALCULATE.
See if these versions work any better:
Last SO = VAR FilteredTable = FILTER ( 'SO Attrition', 'SO Attrition'[BI_ACCT] = EARLIER ( 'SO Attrition'[BI_ACCT] ) && 'SO Attrition'[NEEDED_DT] < EARLIER ( 'SO Attrition'[NEEDED_DT] ) && 'SO Attrition'[SRV_MAP_LOC] = EARLIER ( 'SO Attrition'[SRV_MAP_LOC] ) && 'SO Attrition'[BI_SO_TYPE_CD] <> EARLIER ( 'SO Attrition'[BI_SO_TYPE_CD] ) ) RETURN MAXX ( FilteredTable, 'SO Attrition'[BI_SO_TYPE_CD] )Last Count = VAR FilteredTable = FILTER ( 'SO Attrition', 'SO Attrition'[BI_ACCT] = EARLIER ( 'SO Attrition'[BI_ACCT] ) && 'SO Attrition'[NEEDED_DT] < EARLIER ( 'SO Attrition'[NEEDED_DT] ) ) RETURN MAXX ( FilteredTable, 'SO Attrition'[DISC running Total] )It's possible to get it to work with CALCULATE but easier to mess up, especially if you're not comfortable with context transition concepts.
You could rewrite this one like I did with the others.
Here's a CALCULATE version too that I think should work:
DISC running Total =
CALCULATE (
SUM ( 'SO Attrition'[add or disc] ),
ALLEXCEPT ( 'SO Attrition', 'SO Attrition'[BI_ACCT] ),
'SO Attrition'[NEEDED_DT] <= EARLIER ( 'SO Attrition'[NEEDED_DT] )
)
AlexisOlson it worked! thank you!
You referenced Context transitions. Just for future knowledge do you have a best source to get more familiar?
- AlexisOlson4 years agoSuper User
I included a link to an article upon my first mention.
Here's that link again along with another more recently written article:
https://www.sqlbi.com/articles/understanding-context-transition/https://www.burningsuit.co.uk/context-transition-where-the-row-context-becomes-a-filter-context/