Forum Discussion

thmonte's avatar
thmonte
Helper IV
7 years ago
Solved

Complicated Relationship Tables Using Look Ups

So my current application uses MongoDB which isn't natively supported by PowerBI but we usually expose the data via BI Connector and run all our reports by connecting thru the ODBC driver.   I've b...
  • Anonymous's avatar
    Anonymous
    7 years ago

    Hi thmonte,

     

    Yes, I need that table to return correct one when one user has multiple assignment or outage records.

     

    I add two rank tables with type ranking:

     

    Formula:

    Desc Based on Rank = 
    VAR assigList =
        CALCULATETABLE (
            VALUES ( Assignment[PID] ),
            FILTER ( ALL ( Assignment ), [Date] = EARLIER ( Summary[Date] ) )
        )
    VAR outList =
        CALCULATETABLE (
            VALUES ( 'Outage Unpivoted'[PID] ),
            FILTER ( ALL ( 'Outage Unpivoted' ), [Date] = EARLIER ( Summary[Date] ) )
        )
    VAR outRecord =
        COUNTROWS (
            FILTER (
                'Outage Unpivoted',
                [PID] = EARLIER ( Summary[PID] )
                    && [Date] = EARLIER ( Summary[Date] )
            )
        )
    VAR assigRecord =
        COUNTROWS (
            FILTER (
                'Assignment',
                [PID] = EARLIER ( Summary[PID] )
                    && [Date] = EARLIER ( Summary[Date] )
            )
        )
    VAR assiglistMatch =
        CALCULATETABLE (
            VALUES ( Assignment[Type Of Work] ),
            FILTER (
                'Assignment',
                'Assignment'[PID] = EARLIER ( Summary[PID] )
                    && 'Assignment'[Date] = EARLIER ( Summary[Date] )
            )
        )
    VAR outlistMatch =
        CALCULATETABLE (
            VALUES ( 'Outage Unpivoted'[Outage Type] ),
            FILTER (
                'Outage Unpivoted',
                'Outage Unpivoted'[PID] = EARLIER ( Summary[PID] )
                    && 'Outage Unpivoted'[Date] = EARLIER ( Summary[Date] )
            )
        )
    RETURN
        IF (
            NOT ( [PID] IN UNION ( assigList, outList ) ),
            "Not Assignment",
            IF (
                assigRecord > 0,
                IF (
                    assigRecord >= 2,
                    LOOKUPVALUE (
                        'Assignment Rank'[Assignment Type],
                        'Assignment Rank'[Rank], MINX (
                            FILTER (
                                'Assignment Rank',
                                'Assignment Rank'[Assignment Type] IN assiglistMatch
                            ),
                            [Rank]
                        )
                    ),
                    FIRSTNONBLANK ( assiglistMatch, [Type Of Work] )
                ),
                IF (
                    outRecord > 0,
                    IF (
                        outRecord >= 2,
                        LOOKUPVALUE (
                            'Outage Rank'[Outage Type],
                            'Outage Rank'[Rank], MINX (
                                FILTER ( 'Outage Rank', 'Outage Rank'[Outage Type] IN outlistMatch ),
                                [Rank]
                            )
                        ),
                        FIRSTNONBLANK ( outlistMatch, [Outage Type] )
                    )
                )
            )
        )
    

    Result:

     

    Regards,

    Xiaoxin Sheng