Forum Discussion

mimi's avatar
mimi
Advocate I
7 years ago
Solved

max as a filter

Hi

 

I am trying to calculate sales based on the maximum invoice period, in case someone chooses multiple periods. here is my formula and it is not working. Any help will be appreciated.

 

Sales = CALCULATE(sum(Query1[SalesValue]);max(Query1[InvoicePeriod]))
 
  • Anonymous's avatar
    Anonymous
    7 years ago

    Without going into whether there are any other issues with this approach, to get around the problem you have raised you'd just need to put it into a variable:

     

    Sales = var filterDate = max(Query1[InvoicePeriod])
    RETURN
    CALCULATE(
         sum(Query1[SalesValue]);
         Query1[InvoicePeriod] = filterDate
    )

    You'll also need to specify what the filter condition is.  I've assumed you want records based on that date.  However you could use <= if you wanted to get all records on or before.

  • Anonymous's avatar
    Anonymous
    7 years ago

    I'd suggest creating a date table and having the slicer be based on that date table.  Then, for variable filterdate, do the max on the DateTime instead.

4 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Without going into whether there are any other issues with this approach, to get around the problem you have raised you'd just need to put it into a variable:

     

    Sales = var filterDate = max(Query1[InvoicePeriod])
    RETURN
    CALCULATE(
         sum(Query1[SalesValue]);
         Query1[InvoicePeriod] = filterDate
    )

    You'll also need to specify what the filter condition is.  I've assumed you want records based on that date.  However you could use <= if you wanted to get all records on or before.

    • mimi's avatar
      mimi
      Advocate I

      Hi Ross

       

      Thank for replying.

      However, I am noticing that if the FilterDate does not have values for that month, the value that is being produced is for other months.

       

      For example, suppose the user selects Jan and Feb (represented as number 201801 and 201802). if Feb has no sales values, the result returned is for Jan. I do not want that. I prefer that the value that comes through = 0 or blank

      • Anonymous's avatar
        Anonymous
        Not applicable

        I'd suggest creating a date table and having the slicer be based on that date table.  Then, for variable filterdate, do the max on the DateTime instead.