Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

Dynamic filter range

Hello, I need some help please.   i have two tables: City and sales:   when i select some city. i want to see the the top 3 cities that the sales is +500 then my current filte...
  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi Anonymous ,

    I created a sample pbix file(see the attachment), please check if that is what you want.

    1. Create another city dimension table(DO NOT create any relationship with other table)

    Table = VALUES(City[CityName])

    2. Create a measure as below to judge which city fulfill the conditions

    Flag =
    VAR _cities =
        ALLSELECTED ( 'Table'[CityName] )
    VAR _selcids =
        SELECTEDVALUE ( 'City'[CityID] )
    VAR _cids =
        CALCULATETABLE (
            VALUES ( 'City'[CityID] ),
            FILTER ( ALLSELECTED ( 'City' ), 'City'[CityName] IN _cities )
        )
    VAR _sales =
        CALCULATE (
            SUM ( 'Sales'[Column1] ),
            FILTER ( ALLSELECTED ( 'Sales' ), 'Sales'[CityID] IN _cids )
        )
    VAR _tab =
        SUMMARIZE (
            'Sales',
            'Sales'[CityID],
            "@sales",
                CALCULATE (
                    SUM ( 'Sales'[Column1] ),
                    FILTER (
                        ALLSELECTED ( 'Sales' ),
                        'Sales'[CityID] = EARLIER ( 'Sales'[CityID] )
                    )
                )
        )
    RETURN
        IF (
            _selcids
                = MAXX (
                    FILTER ( _tab, [@sales] >= _sales && [@sales] <= _sales + 500 ),
                    [CityID]
                ),
            1,
            0
        )

    3. Create a table visual and apply a visual-level filter with the condition(Flag is 1)

    Best Regards