Forum Discussion

Giovani's avatar
Giovani
Icon for Helper I rankHelper I
5 years ago
Solved

Dynamic filter based in multiple columns and criteria

I am struggling with something that may be simple to solve. By year and month, I want to make a dynamic bar chart to present counts by a distinct ID that fits criteria based on columns Filter1 and Filter2. For simplicity, I am only using as an example a few lines from a large table, assuming all are from the same year and month.

ID

Filter1

Filter2

ID1

A

D

ID1

B

D

ID2

A

F

ID2

B

E

ID3

A

D

ID3

B

F

ID4

B

D

ID4

C

D

ID5

B

D

ID5

C

E

ID6

A

D

ID6

B

D

ID6

C

D

 

An example of questions I am trying to answer and visualize are

1-How many times A and B were concomitantly present in an ID? Answer = 4 (ID1;ID2;ID3;ID6). This would later be used to answer a similar question applied to B and C, or for the three of them A, B, and C.

2- How many times A and B were concomitantly present in an ID, and A had Filter2= D and B had Filter2=  D?

Answer= 2 (ID1; ID6)

2- How many times A and B were concomitantly present in an ID, and A had Filter2=  D and B had Filter2=  E?

Answer= 0

 

Any help in how I could do this is welcome!

  • Giovani might these code help

     

     

    ID_Count:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    VALUES ( SampleData[Filter1] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A" ), CONTAINSROW ( _Filter1, "B" ) )
        )
    )
    ----------------------------
    ID_Count2:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    SUMMARIZE ( SampleData, SampleData[Filter1], SampleData[Filter2] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A", "D" ), CONTAINSROW ( _Filter1, "B", "D" ) )
        )
    )
    ----------------------
    ID_Count3:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    SUMMARIZE ( SampleData, SampleData[Filter1], SampleData[Filter2] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A", "D" ), CONTAINSROW ( _Filter1, "B", "E" ) )
        )
    )

     

     

     

2 Replies

  • wdx223_Daniel's avatar
    wdx223_Daniel
    Icon for Community Champion rankCommunity Champion

    Giovani might these code help

     

     

    ID_Count:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    VALUES ( SampleData[Filter1] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A" ), CONTAINSROW ( _Filter1, "B" ) )
        )
    )
    ----------------------------
    ID_Count2:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    SUMMARIZE ( SampleData, SampleData[Filter1], SampleData[Filter2] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A", "D" ), CONTAINSROW ( _Filter1, "B", "D" ) )
        )
    )
    ----------------------
    ID_Count3:=COUNTROWS (
        FILTER (
            VALUES ( SampleData[ID] ),
            VAR _Filter1 =
                CALCULATETABLE (
                    SUMMARIZE ( SampleData, SampleData[Filter1], SampleData[Filter2] ),
                    ALLEXCEPT ( SampleData, SampleData[ID] )
                )
            RETURN
                AND ( CONTAINSROW ( _Filter1, "A", "D" ), CONTAINSROW ( _Filter1, "B", "E" ) )
        )
    )