Forum Discussion
Advanced multiple tables join's with conditions
- 3 years ago
See if this works for you.
FIrst I created dimension tables using:
Then create the following measures:
Common Bill ID = VAR _Int = COUNTROWS ( INTERSECT ( VALUES ( 'Table 2'[BilliD] ), VALUES ( 'Table 1'[ID] ) ) ) RETURN IF ( _Int = 1, 1 )To use as a filter in the filter pane, use this measure and set the value to = 1:
Row Filter = VAR _AccIDs = COUNTROWS ( INTERSECT ( VALUES ( 'Account Table'[Account ID] ), CALCULATETABLE ( VALUES ( 'Table 2'[Account Number] ), FILTER ( ALLEXCEPT ( 'Table 2', 'Table 2'[Account Number] ), [Common Bill ID] = 1 ) ) ) ) RETURN SWITCH ( TRUE (), [Common Bill ID] = 1, 1, ISBLANK ( _AccIDs ), 1, 0 )To obtain the highest Status by account and filtered rows, use:
Status = VAR _ID = MAX ( 'Account Table'[Account ID] ) VAR _ImpValues = CALCULATETABLE ( VALUES ( 'Status Table'[Imp] ), FILTER ( ALLSELECTED ( 'Table 2' ), 'Table 2'[Account Number] = _ID ) ) VAR _MaxImp = MAXX ( _ImpValues, 'Status Table'[Imp] ) VAR _Status = LOOKUPVALUE ( 'Status Table'[Acc Status], 'Status Table'[Imp], _MaxImp ) RETURN IF ( ISBLANK ( MAX ( 'Table 2'[Version] ) ), BLANK (), _Status )and you will get:
Sample PBIX file attached
Sorry, I'm not too sure how you are calculating the "Status" field for each account. Is it just picking the highest from Critical > Warning > Normal for each account?
Hi PaulDBrown ,
Yes Status column is new column based on priorty of 1.Critical 2.Warning and 3. Normal
- PaulDBrown3 years agoCommunity Champion
See if this works for you.
FIrst I created dimension tables using:
Then create the following measures:
Common Bill ID = VAR _Int = COUNTROWS ( INTERSECT ( VALUES ( 'Table 2'[BilliD] ), VALUES ( 'Table 1'[ID] ) ) ) RETURN IF ( _Int = 1, 1 )To use as a filter in the filter pane, use this measure and set the value to = 1:
Row Filter = VAR _AccIDs = COUNTROWS ( INTERSECT ( VALUES ( 'Account Table'[Account ID] ), CALCULATETABLE ( VALUES ( 'Table 2'[Account Number] ), FILTER ( ALLEXCEPT ( 'Table 2', 'Table 2'[Account Number] ), [Common Bill ID] = 1 ) ) ) ) RETURN SWITCH ( TRUE (), [Common Bill ID] = 1, 1, ISBLANK ( _AccIDs ), 1, 0 )To obtain the highest Status by account and filtered rows, use:
Status = VAR _ID = MAX ( 'Account Table'[Account ID] ) VAR _ImpValues = CALCULATETABLE ( VALUES ( 'Status Table'[Imp] ), FILTER ( ALLSELECTED ( 'Table 2' ), 'Table 2'[Account Number] = _ID ) ) VAR _MaxImp = MAXX ( _ImpValues, 'Status Table'[Imp] ) VAR _Status = LOOKUPVALUE ( 'Status Table'[Acc Status], 'Status Table'[Imp], _MaxImp ) RETURN IF ( ISBLANK ( MAX ( 'Table 2'[Version] ) ), BLANK (), _Status )and you will get:
Sample PBIX file attached