Forum Discussion
scabral
Helper IV
6 years agoretrieve rows with max value within a group based on date filter
Hi, i have the following table with some sample data similar to what we have in our model: Claim Id Damage Id Location Id Seq # Reserve Date Reserve Value Reserve Status 1 99 33...
- Anonymous6 years ago
// Assumptions: // Apart from [Reserve Status] all other columns // in the fact table T should be hidden. Let's // assume that the AsOfDateSlicer table that stores // dates is DISCONNECTED from T. [Total Reserve] = var __asOfDate = SELECTEDVALUE( AsOfDateSlicer[Date] ) var __filter = CALCULATETABLE( ADDCOLUMNS( SUMMARIZE( T, T[ClaimId], T[DamageID], T[LocationID] ), "@MaxSeq", CALCULATE( MAX( T[Seq #] ) ) ), KEEPFILTERS( T[Reserve Status] = "approved" ), T[Reserve Date] <= __asOfDate ) var __result = CALCULATE( SUM( T[Reserve Value] ), treatas( __filter, T[ClaimId], T[DamageID], T[LocationID], T[Seq #] ), ALL( T ) ) RETURN __result
Anonymous
6 years agoNot applicable
// Assumptions:
// Apart from [Reserve Status] all other columns
// in the fact table T should be hidden. Let's
// assume that the AsOfDateSlicer table that stores
// dates is DISCONNECTED from T.
[Total Reserve] =
var __asOfDate = SELECTEDVALUE( AsOfDateSlicer[Date] )
var __filter =
CALCULATETABLE(
ADDCOLUMNS(
SUMMARIZE(
T,
T[ClaimId],
T[DamageID],
T[LocationID]
),
"@MaxSeq",
CALCULATE( MAX( T[Seq #] ) )
),
KEEPFILTERS( T[Reserve Status] = "approved" ),
T[Reserve Date] <= __asOfDate
)
var __result =
CALCULATE(
SUM( T[Reserve Value] ),
treatas(
__filter,
T[ClaimId],
T[DamageID],
T[LocationID],
T[Seq #]
),
ALL( T )
)
RETURN
__result
- scabral6 years ago
Helper IV
Hi Daxer,
this seems to work, but why did you use the KEEPFILTERS on only the Reserve Status field?
Scott
- Anonymous6 years agoNot applicableKEEPFILTERS lets you keep existing filters on the column instead of overwriting them. This is usually needed on a column that is exposed to the end user because when the user filters by the column you usually don't want to overwrite the filter in your measure. But whether you need KEEPFILTERS or not depends on what you want to achieve. I assumed that you wanted the measure to respond dynamically to a filter on the column mentioned under KEEPFILTERs.
- scabral6 years ago
Helper IV
Hi Daxar,
so another question. I tried to use the DAX to also count a column from a dimension table, but only for the rows in the dimension table that exist in the TREATAS table like this:
Count of Claims =VAR ReserveFilter =CALCULATETABLE (ADDCOLUMNS (SUMMARIZE ('Claim Reserve Values','Claim Reserve Values'[Claim ID],'Claim Reserve Values'[Damage ID],'Claim Reserve Values'[Location ID]),"MaxSeq", CALCULATE ( MAX ( 'Claim Reserve Values'[Reserve Sequence Num] ) )),KEEPFILTERS('Claim Reserve'[Reserve Status ID] = 2 ))VAR Result =CALCULATE (DISTINCTCOUNT( 'Claim Adjustment File'[Claim Number]),TREATAS (ReserveFilter,'Claim Reserve Values'[Claim ID],'Claim Reserve Values'[Damage ID],'Claim Reserve Values'[Location ID],'Claim Reserve Values'[Reserve Sequence Num]),ALL ( 'Claim Reserve Values' ),'Claim Reserve'[Reserve Group ID] in {1000007, 1000008})RETURNResulthowerver, the count comes back for all of the rows in the 'Claim Adjustment File' table. I want to only count the 'Claim Adjustment File'[Claim Number] if it exists as part of the TREATAS result. The [claim id] field would be the relationship to use between the tables.thanskscott- Anonymous6 years agoNot applicableI don't know the model, hence I can't tell you where you could be wrong in the formula. Sorry.