Forum Discussion

VTB's avatar
VTB
Frequent Visitor
7 years ago
Solved

Custom filter Measure with DAX

hi folks, 

looking to see if someone handy with DAX can help me figure out if this is doable as a measure - or if i should just do this on the sql side, and feed the final result back into powerbi. 

 

I have a table example with the following:

Where I'd like to almost create a new column that considers Type And Product -> as in give me a new set of values that filters out where Type = A or B, and happens to be Product = Not working, so that end result still shows all values for all types, including for A & B, where their Product value is either Null or Working. 

 

DateValueTypeProduct
12/31/20150.05AWorking
12/31/20150.20BNot Working
12/31/20150.43C 
12/31/20150.38DWorking
12/31/20150.48ANot Working
12/31/20150.49B 
12/31/20150.86CWorking
12/31/20150.21DNot Working
12/31/20150.43AWorking
12/31/20150.80BNot Working
12/31/20150.77CWorking
12/31/20150.74DNot Working
12/31/20150.64FWorking
12/31/20150.10HWorking
12/31/20150.26JWorking
  • Anonymous's avatar
    Anonymous
    7 years ago

    Hi.

     

    Yeah, English can be hard but... I wouldn't complain. If you knew Polish, Russian, Czech, Hungarian or Chinese, then you'd know what it really means HARD :)

     

    To the point. You can create a column in your table and put TRUE (or 1, or "Remove") if the conditions are met, FALSE (or 0, or "Keep") when not.

     

     

    [Keep/Remove] :=
    if (
    	'Table'[Type] = "A" && 'Table'[Product] = "Not Working",
    	"remove",
    	"keep"
    )

     

     

    If you want to AND several conditions, you can use &&. If you want to OR them, you use ||. Once you have the column defined above, you can create a new table that will only keep the rows with "keep" in them, thus effectively removing the ones where the condition is true. Just create a new table. Go to Modeling > Calculations > New Table and type this:

     

    Filtered Table =
    FILTER(
        'Table',
        'Table'[Keep/Remove] = "keep"
    )

    Best

    Darek

5 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Yeah....

     

    If you try to formulate the requirements in a fashion that's understandable to a human being, then maybe someone will be able to help you :) For the time being, it's completely obscure what you want.

     

    Best

    Darek

    • VTB's avatar
      VTB
      Frequent Visitor

      English can be hard...

       

      let me try this again, am trying to see what dax functions would work best if I were to create either a New column, or New table + column, that would take existing set of columns and filter out a set of values in mulitple columns. 

       

      so in the below to simplify this:

      DateValueTypeProduct
      12/31/20150.05AWorking
      12/31/20150.20BNot Working
      12/31/20150.43C 
      12/31/20150.38DWorking
      12/31/20150.48A

      Not Working

      to filter the table such that you remove row where you have Type = A, Product = Not Working. (but leave Type = A, Product = Working) 

      My normal filter right now either removes anything that equals "A", or "Not working", which is an issue, when say you want to keep B around thats also "Not Working". So instead of creating another column that merges Type & Product into a single column and sorting on that, I was wondering if there are joint conditional filters that can be used as a dax measure/new table/new column. 

       

       

      • Anonymous's avatar
        Anonymous
        Not applicable

        Hi.

         

        Yeah, English can be hard but... I wouldn't complain. If you knew Polish, Russian, Czech, Hungarian or Chinese, then you'd know what it really means HARD :)

         

        To the point. You can create a column in your table and put TRUE (or 1, or "Remove") if the conditions are met, FALSE (or 0, or "Keep") when not.

         

         

        [Keep/Remove] :=
        if (
        	'Table'[Type] = "A" && 'Table'[Product] = "Not Working",
        	"remove",
        	"keep"
        )

         

         

        If you want to AND several conditions, you can use &&. If you want to OR them, you use ||. Once you have the column defined above, you can create a new table that will only keep the rows with "keep" in them, thus effectively removing the ones where the condition is true. Just create a new table. Go to Modeling > Calculations > New Table and type this:

         

        Filtered Table =
        FILTER(
            'Table',
            'Table'[Keep/Remove] = "keep"
        )

        Best

        Darek