Power BI मध्ये CALCULATE कसा वापरायचा: Slicer ignore करणारा एका State चा Revenue (Filter Context समजून घ्या)
Filter मध्ये Karnataka निवडा आणि page वरचा प्रत्येक visual Karnataka दाखवतो. सहसा हेच हवं असतं. पण कधी कधी एका card चं काम ठरलेलं असतं: "benchmark म्हणून नेहमी Maharashtra, आपलं सगळ्यात मोठं state, दाखव". हा chapter आधी page filter तुमच्या measures ला काय करतो (filter context) ते दाखवतो, मग CALCULATE, DAX मधला सगळ्यात महत्त्वाचा function, वापरून एका measure ला स्वतःचा state filter देतो. CALCULATE कोणते filters बदलतो, कोणते तसेच ठेवतो, आणि एका न दिसणाऱ्या space मुळे card (Blank) का होतो, हे पण बघाल.
या chapter मध्ये तुम्ही काय शिकाल
- Filter context: page filter प्रत्येक visual पर्यंत पोचतो
- CALCULATE(expression, filter)
- State filter बदलला तरी Maharashtra ठेवणारा card
- CALCULATE फक्त त्याच column वरचा filter बदलतो
- इतर columns साठी REMOVEFILTERS
- सुरुवातीच्या space मुळे (Blank); text matching case ignore करतं
Practice files: blinkit-sales-2025-metrics.csv (800 order lines) आणि blinkit-sales-2025-metrics-raw.csv (त्याच rows, Maharashtra च्या आधी space सकट).
काल्पनिक data: Blinkit सारखी काल्पनिक sales, फक्त practice साठी. Amounts ₹ मध्ये आणि dates DD-MM-YYYY.
1. Problem
Page वर state filter, total revenue card आणि category chart आहे. Manager ला दुसरा card हवा जो कुठलंही state निवडलं तरी नेहमी Maharashtra चा revenue दाखवेल, म्हणजे प्रत्येक state त्याच्याशी compare करता येईल.
2. सोप्या शब्दात idea
Filter context म्हणजे measure calculate होताना लागू असलेले filters: page filters, slicers, आणि visual मधली row किंवा bar. total revenue फक्त त्या filters मधून उरलेल्या rows ची बेरीज करतो.
CALCULATE calculate करण्याआधी हे filters बदलतो:
maharashtra revenue = CALCULATE([total revenue], sales[state] = "Maharashtra")
- पहिला argument: expression, तुम्हाला काय दाखवायचं (total revenue, total sales, total orders).
- मग एक किंवा अधिक filters.
sales[state] वरचा filter page कडून येणारा कुठलाही state filter, फक्त या measure साठी, बदलतो. इतर columns वरचे filters (category, date) लागू राहतात. Main course मधले Evaluation Context आणि CALCULATE – The Most Important Function हे lessons दोन्ही गोष्टी सविस्तर सांगतात.
Classroom line
As the filter changes, the revenue I see follows the filter.
Class मधलं वाक्य
"जसा filter होईल, filter च्या अनुसार मला revenue दिसतोय."
जसा filter बदलतो, तसा filter नुसार मला revenue दिसतोय.
Classroom line
As the filter changes, the revenue I see follows the filter.
3. Data
blinkit-sales-2025-metrics.csv मधला state नुसार revenue:
| State | Revenue (₹) |
|---|---|
| Maharashtra | 44,763 |
| Karnataka | 40,101 |
| Telangana | 26,181 |
| Gujarat | 20,568 |
| Tamil Nadu | 16,608 |
| Total | 1,48,221 |
Category नुसार Maharashtra: Dairy & Bakery ₹13,497, Snacks & Branded Foods ₹13,070, Staples ₹10,690, Beverages ₹7,506.
4. Step by step
Filter context बघा
- File load करा (table
sales) आणि नसेल तरtotal revenue = SUM(sales[revenue])बनवा. - total revenue चा Card add करा: 1,48,221. Stacked column chart add करा: X वर category, Y वर total revenue.
- Filters pane › state ला Filters on this page मध्ये drag करा. Karnataka tick करा: card 40,101 दाखवतो, आणि chart फक्त Karnataka च्या rows.
- Gujarat add करा: 60,669. Select all: परत 1,48,221.
एका measure ला स्वतःचा state filter द्या
- sales वरचे three dots › New measure:
maharashtra revenue = CALCULATE([total revenue], sales[state] = "Maharashtra") - maharashtra revenue चा दुसरा Card add करा: 44,763.
- Page filter Karnataka, मग Telangana, मग Gujarat + Tamil Nadu करा. total revenue प्रत्येक वेळी बदलतो; maharashtra revenue 44,763 च राहतो.
एक category, त्याच पद्धतीने
dairy revenue = CALCULATE([total revenue], sales[category] = "Dairy & Bakery")filter नसताना 59,124 आणि Karnataka निवडल्यावर 17,048 दाखवतो: state filter लागू राहतो, कारण हा CALCULATE फक्त category set करतो.
आकृती 1. Page filter card आणि chart पर्यंत पोचतो; CALCULATE card स्वतःचं state set करतो (illustration).
Classroom line
By default, the filter we use applies to every visual on this page.
Class मधलं वाक्य
"By default काय होतं, आपण जो filter use करतो, तोच filter या page च्या सगळ्या visuals वर apply होतो."
By default काय होतं, आपण जो filter वापरतो, तोच filter या page च्या सगळ्या visuals वर apply होतो.
Classroom line
By default, the filter we use applies to every visual on this page.
Classroom line
The first argument is what you want to show: total revenue, total sales or total orders.
Class मधलं वाक्य
पहिला argument म्हणजे तुम्हाला काय दाखवायचं: total revenue, total sales किंवा total orders.
Classroom line – हिंदी
"Pehla parameter hai aapko kya dikhana hai: total revenue, total sales, total orders."
5. तुमचा result असा दिसायला हवा
आकृती 2. Karnataka निवडल्यावर: total revenue ₹40,101, maharashtra revenue अजूनही ₹44,763 (illustration).
| Page filter (state) | total revenue | maharashtra revenue |
|---|---|---|
| काही नाही | ₹1,48,221 | ₹44,763 |
| Karnataka | ₹40,101 | ₹44,763 |
| Karnataka + Gujarat | ₹60,669 | ₹44,763 |
| Telangana | ₹26,181 | ₹44,763 |
6. काय झालं
- total revenue page च्या filter context मध्ये calculate होतो, म्हणून तो state filter नुसार बदलतो.
- maharashtra revenue साठी CALCULATE ने page चा state filter काढला आणि त्याच्या जागी state = Maharashtra ठेवलं.
- Filter context मधलं बाकी काहीच बदललं नाही.
Classroom line
However much you change the filter, it won't move, because we told the measure that it sets its own state filter.
Class मधलं वाक्य
तुम्ही कितीही बदला, त्यावर परिणाम होणार नाही, कारण आपण measure ला सांगितलं आहे की state चा filter तो स्वतः देईल.
Classroom line – हिंदी
"Aap kitna bhi change karo usko effect nahi hone wala, kyunki humne measure ko bataya hai state ka filter hum khud denge."
7. अजून explore करा
इतर columns लागू राहतात
दुसरा page filter, category = Dairy & Bakery, add करा आणि state = Karnataka ठेवा. maharashtra revenue आता 13,497 दाखवतो: CALCULATE ने state बदललं, पण category filter लागू राहिला.
आकृती 3. CALCULATE फक्त state filter बदलतो; category filter राहतो (illustration).
Card ने category पण ignore करावी असं हवं असेल, तर तो filter पण काढा:
maharashtra revenue all =
CALCULATE([total revenue], sales[state] = "Maharashtra", REMOVEFILTERS(sales[category]))
हा परत 44,763 दाखवतो. इथे ALL(sales[category]) पण तसंच काम करतो. बघा ALL, ALLEXCEPT, REMOVEFILTERS, ALLSELECTED.
Case ने फरक पडत नाही, spelling ने पडतो
DAX text comparison case-insensitive आहे: sales[state] = "maharashtra" पण 44,763 देतो. पण "Maharastra" (चुकीचं spelling) (Blank) देतो.
Space मुळे (Blank)
त्याऐवजी blinkit-sales-2025-metrics-raw.csv load करा आणि card (Blank) दाखवतो. State value " Maharashtra" आहे, सुरुवातीला space सकट, म्हणून "Maharashtra" कशाशीच match होत नाही. Source मध्येच fix करा: Transform data › text columns select करा › Transform › Format › Trim, मग Clean › Close & Apply. Card परत 44,763 दाखवतो.
Classroom line
Who is seeing a blank (dashes) on the card?
Class मधलं वाक्य
"Dash dash कोणाला दिसायला लागलंय?"
Card वर dash dash (blank) कोणाला दिसायला लागलंय?
Classroom line
Who is seeing a blank (dashes) on the card?
Classroom line
That is why we always need to trim and clean text columns.
Class मधलं वाक्य
"त्यासाठी आपण नेहमी text column वरती trim, clean करणं गरजेचं आहे."
त्यासाठी आपण नेहमी text column वर trim, clean करणं गरजेचं आहे.
Classroom line
That is why we always need to trim and clean text columns.
8. नेहमीच्या चुका
| चुकीचा result | कारण | उपाय |
|---|---|---|
| (Blank) | Value मध्ये सुरुवातीला/शेवटी space | Power Query मध्ये Trim आणि Clean |
| (Blank) | Value चं spelling चुकलं | Table मधून नेमकी value copy करा |
| (Blank) किंवा चुकीचा number | Filter column sales शी related नसलेल्या table मध्ये | sales मधला किंवा related table मधला column वापरा |
| Card अजून category नुसार हलतो | CALCULATE ने फक्त state बदललं | REMOVEFILTERS(sales[category]) add करा |
| CALCULATE मध्ये error | Filter आधी लिहिला | आधी expression, मग filters |
Ravindra Bagale's Tip
CALCULATE card (Blank) दाखवत असेल, तर formula च्या आधी value check करा. Table view उघडा, column filter करा आणि नेमका text बघा. दहापैकी नऊ वेळा formula बरोबर असतो आणि data मध्ये जास्तीची space असते.
Ravindra Bagale's Tip – मराठी
CALCULATE card (Blank) दाखवत असेल, तर formula च्या आधी value check करा. Table view उघडा, column filter करा आणि नेमका text बघा. दहापैकी नऊ वेळा formula बरोबर असतो आणि data मध्ये जास्तीची space असते.
Ravindra Bagale's Tip – हिंदी
CALCULATE card (Blank) दिखाए, तो formula से पहले value check करें. Table view खोलें, column filter करें और सही text देखें. दस में से नौ बार formula सही होता है और data में एक extra space होती है.
Classroom line
Do you know why it happened? The value doesn't match.
Class मधलं वाक्य
"का व्हायला लागलं माहिती का, ते value match होईना त्याला."
का झालं माहिती आहे? ती value match होत नाही.
Classroom line
Do you know why it happened? The value doesn't match.
9. स्वतः practice करा
Practice task
blinkit-sales-2025-metrics.csv वापरून:
karnataka orders = CALCULATE([total orders], sales[state] = "Karnataka")लिहा (total orders = DISTINCTCOUNT(sales[order_id])). तो काय दाखवतो?- Page filter state = Telangana असताना total revenue आणि maharashtra revenue काय दाखवतात?
- Page filters state = Gujarat आणि category = Staples असताना maharashtra revenue काय दाखवतो?
- Staples category साठी
staples revenueलिहा. Filters नसताना तो किती?
Solution दाखवा
- 124.
- ₹26,181 आणि ₹44,763.
- ₹10,690 (Maharashtra, Staples: category filter लागू राहतो).
CALCULATE([total revenue], sales[category] = "Staples")= ₹30,290.
10. Professional सारखा विचार करा
- Business दृष्टी. Benchmark cards (सगळ्यात मोठं state, मागचं वर्ष, target region) हे CALCULATE measures असतात.
- काय बदलताय ते माहिती ठेवा. CALCULATE तुम्ही नाव दिलेल्या column वरचा filter बदलतो; बाकी filters चं काय करायचं ते मुद्दाम ठरवा.
- आधी text साफ करा. Power Query मध्ये text columns Trim आणि Clean करा; (Blank) शोधण्याचे तास वाचतात.
- स्पष्ट नाव. maharashtra revenue हे नाव viewers ना सांगतं की हा card filter नुसार बदलत नाही.
Interview questions
- CALCULATE काय करतो? बदललेल्या filter context मध्ये expression evaluate करतो.
- CALCULATE मधला filter सगळे page filters काढतो का? नाही; फक्त त्याच column वरचा filter. बाकी लागू राहतात.
- Category filter पण ignore कसा करायचा? REMOVEFILTERS(sales[category]) (किंवा ALL) add करा.
- Formula बरोबर दिसत असताना CALCULATE (Blank) का देऊ शकतो? Value match होत नाही: जास्तीची space, चुकीचं spelling, किंवा unrelated table. Case हे कारण नाही.
Recap
थोडक्यात
- Filter context: page filters प्रत्येक visual पर्यंत पोचतात.
CALCULATE([total revenue], sales[state] = "Maharashtra"): आधी expression, मग filters.- तो फक्त state filter बदलतो; category आणि date filters लागू राहतात.
- REMOVEFILTERS(column) दुसरा filter काढतो.
- (Blank): spaces आणि spelling check करा; DAX text matching case ignore करतं.
उजळणी card