Forum Discussion

cpiercey's avatar
cpiercey
Frequent Visitor
6 years ago
Solved

Calculated Column Constraints with Data Table

Hello, I am experiencing an unexpected issue with a calculated column and I am wondering if it has to do with the way I created the table it is referencing. I have the following tables:

 

1. Unfiltered Forecast - Created using SUMMARIZE with master data import tables

2. Unfiltered Demand - Created by grouping by inventory ID # and contains a calculated column which references the Unfiltered Forecast table

3. Filtered Forecast - Created using a UNION on two tables

4. Filtered Demand - Created by grouping by inventory ID # and contains a calculated column which references the Filtered Forecast table

 

Here is the calculated column used in #2:

 

2018 Q1 Demand = CALCULATE(sum('Unfiltered Forecast'[Total Quantity]), 'Unfiltered Forecast'[Z Outlier] = "Normalized", 'Unfiltered Forecast'[Date - Year] = 2018, 'Unfiltered Forecast'[Date - Quarter] = 1)
 
This column is able to perform the calculation and find the sum of Total Quantity for the given parameters to the CALCULATE() function for each specific row. For table #4, I use basically the exact same column except that it has one less filter and references table #3:
 
2018 Q1 Demand = CALCULATE(sum('Filtered Forecast'[Total Quantity]), 'Filtered Forecast'[Date - Year] = 2018, 'Filtered Forecast'[Date - Quarter] = 1)
 
However, this column is unable to calculate row-specific values. It calculates one (very large) value and applies it to all of the rows. Can you please help me figure out what is causing this loss of row-specific calculation? Thanks in advance for taking a look.
  • cpiercey's avatar
    cpiercey
    6 years ago

    Thanks for the response, AllisonKennedy. I ended up adding additional context to the original formula which allowed the calculation to execute at the row-level. The end result needed to be a summation of quantities for each item in a given time period based on a transaction table with many transactions for that item. I have it working now, I also took your advice on the DimDate table, thanks for the tip.

4 Replies

  • AllisonKennedy's avatar
    AllisonKennedy
    Community Champion
    cpiercey Can I ask what result you are expecting?

    You are doing a SUM inside a calculated column, which is generally not advised. You have nested it inside a CALCULATE which does change the context and makes it provide ok results, but I still don't recommend this approach.

    What do you want as an end result?

    Try using calculated MEASURES for some of your formulas instead, and put them in a matrix visual with Year and Quarter.

    I also recommend using a DimDate table rather than the Forecast table dates: https://excelwithallison.blogspot.com/2020/04/dimdate-what-why-and-how.html
    • cpiercey's avatar
      cpiercey
      Frequent Visitor

      Thanks for the response, AllisonKennedy. I ended up adding additional context to the original formula which allowed the calculation to execute at the row-level. The end result needed to be a summation of quantities for each item in a given time period based on a transaction table with many transactions for that item. I have it working now, I also took your advice on the DimDate table, thanks for the tip.

      • AllisonKennedy's avatar
        AllisonKennedy
        Community Champion
        cpiercey
        Glad you got it working!
        Please can you mark this post as solved so others know it is resolved and can find the solution easily?
        Thanks!
  • Anonymous's avatar
    Anonymous
    Not applicable

    cpiercey 
    I wonder why do you create the column in table 4 while it calculate with the column in table 3. Why don't you just create the column in Table 3.

     

    Basically the expression column of Calculate(xxxx) must from the current table, you can filter with others tables if there is a relationship, something like:

     

    2018 Q1 Demand = CALCULATE(sum('Filtered Demand'[Total Quantity]), 'Filtered Forecast'[Date - Year] = 2018, 'Filtered Forecast'[Date - Quarter] = 1)

     


    Paul Zheng _ Community Support Team
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.