Forum Discussion

rdnguyen's avatar
rdnguyen
Helper V
3 years ago
Solved

Count distinct with priority

Hi everyone,

I have a list of items that I did count for late delivery and on time delivery. It means the item could be in both category Late and On-time. By doing the count for each category, I realized the total was over calculated. For example, I counted Item A has 1 "late", 2 "on-time", but would be considered "late" in overall.

 

How could I add this filter condition while counting on-time for not including this item?

  • Hi rdnguyen ,

     

    Based on your description, I have created a simple sample:

    Please try:

    Late = 
    var _a = SUMMARIZE('Table',[ID],"Flag",IF("Late" in SELECTCOLUMNS(FILTER(ALL('Table'),[ID]=EARLIER('Table'[ID])),"Category",[Category]),"Late","On-Time"))
    return COUNTX(FILTER(_a,[Flag]="Late"),[Flag])
    
    On-Time = 
    var _a = SUMMARIZE('Table',[ID],"Flag",IF("Late" in SELECTCOLUMNS(FILTER(ALL('Table'),[ID]=EARLIER('Table'[ID])),"Category",[Category]),"Late","On-Time"))
    return COUNTX(FILTER(_a,[Flag]="On-Time"),[Flag])

    Final output:

    Best Regards,

    Jianbo Li

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

4 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    hello rdnguyen can you please provide with more detail or sample?

  • tamerj1's avatar
    tamerj1
    Community Champion

    Hi rdnguyen 

    you need to iterate over "items" like

    SUMX (

    VALUES ( 'Table'[Item Name] ),

    [Count Measure] 

    )

  • Hi rdnguyen ,

     

    Based on your description, I have created a simple sample:

    Please try:

    Late = 
    var _a = SUMMARIZE('Table',[ID],"Flag",IF("Late" in SELECTCOLUMNS(FILTER(ALL('Table'),[ID]=EARLIER('Table'[ID])),"Category",[Category]),"Late","On-Time"))
    return COUNTX(FILTER(_a,[Flag]="Late"),[Flag])
    
    On-Time = 
    var _a = SUMMARIZE('Table',[ID],"Flag",IF("Late" in SELECTCOLUMNS(FILTER(ALL('Table'),[ID]=EARLIER('Table'[ID])),"Category",[Category]),"Late","On-Time"))
    return COUNTX(FILTER(_a,[Flag]="On-Time"),[Flag])

    Final output:

    Best Regards,

    Jianbo Li

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.