A CALCULATE filter like Product[Category] = "Bikes" names one column. When the condition needs a measure, or several columns of a row, use FILTER(Table, Condition). It walks the table row by row and keeps the rows where the condition is true:
Products Over 20K = COUNTROWS(FILTER(Product, [Total Sales] > 20000))
For each product row, [Total Sales] is evaluated for that product, so the condition sees each product's own sales. Writing CALCULATE(..., [Total Sales] > 20000) instead is an error: a measure can't be a column filter.
FILTER only sees rows already in the filter context. That's what you want when a slicer should still apply. KEEPFILTERS does the same for a plain column filter: CALCULATE([Total Sales], KEEPFILTERS(Product[Category] = "Bikes")) returns blank in a Camping row instead of replacing Camping with Bikes.