fx Power Pivot & DAX Intro
ENहिन्दी

CALCULATE — DAX का सबसे ज़रूरी फ़ंक्शन

⏱ 15 min

आप क्या सीखेंगे

  • एक वाक्य में filter context
  • CALCULATE = measure + बदले हुए फ़िल्टर
  • % of total — ALL से फ़िल्टर हटाना

समझिए

1. एक वाक्य में filter context

हर पिवट सेल पर फ़िल्टर का एक सेट होता है — उसकी रो, उसके कॉलम, slicers और report filters से। Measure उन्हीं फ़िल्टर के तहत गणना होता है। "North × Electronics, FY2025-26" सेल सिर्फ़ उन रो का जोड़ करता है जो तीनों से मेल खाती हैं: 6,81,10,625।

2. CALCULATE = measure + बदले हुए फ़िल्टर

CALCULATE( <measure>, <filter1>, <filter2>, ... )

यह सेल के फ़िल्टर लेता है, आपके दिए फ़िल्टर जोड़ता या बदलता है, और measure की गणना करता है।

तय फ़िल्टर:

North Revenue := CALCULATE([Total Revenue], dim_Stores[Region] = "North")

किसी भी सेल में यह North का revenue दिखाता है — "South" रो में भी, क्योंकि Region फ़िल्टर बदल दिया जाता है। FY2025-26 के लिए: 9,42,56,153।

कई शर्तें (AND):

North Electronics := CALCULATE([Total Revenue], dim_Stores[Region] = "North", dim_Products[Category] = "Electronics")

एक कॉलम के अंदर OR:

Delhi+Mumbai := CALCULATE([Total Revenue], dim_Stores[City] IN {"Delhi", "Mumbai"})

3. % of total — ALL से फ़िल्टर हटाना

All Regions Revenue := CALCULATE([Total Revenue], ALL(dim_Stores))
Region Share %      := DIVIDE([Total Revenue], [All Regions Revenue])

ALL(dim_Stores) Stores टेबल से आने वाला हर फ़िल्टर हटा देता है, इसलिए भाजक (denominator) हमेशा सारे स्टोर का टोटल होता है (Category, FY और दूसरे फ़िल्टर फिर भी लागू)। FY2025-26 में North का हिस्सा = 32.0%।

Category के अंदर हिस्सा (सिर्फ़ Product फ़िल्टर हटाएँ, Category रखें):

Share of Category % := DIVIDE([Total Revenue], CALCULATE([Total Revenue], ALL(dim_Products[Product])))

Electronics में Laptop का हिस्सा = 46.4%।

REMOVEFILTERS(...) CALCULATE के अंदर ALL वाले ही काम का नया, ज़्यादा पढ़ने लायक नाम है।

4. मौजूदा फ़िल्टर रखें: KEEPFILTERS

डिफ़ॉल्ट में CALCULATE का फ़िल्टर उस कॉलम पर सेल के फ़िल्टर को बदल देता है। मिलान (intersect) करने के लिए:

North Only := CALCULATE([Total Revenue], KEEPFILTERS(dim_Stores[Region] = "North"))

अब South रो North का नंबर नहीं, blank दिखाती है (South AND North = कुछ नहीं)।

5. Measure पर फ़िल्टर: FILTER

कॉलम पर शर्त आसान है। किसी गणना पर शर्त के लिए टेबल पर FILTER इस्तेमाल करें:

Big Order Revenue := CALCULATE([Total Revenue], FILTER(fact_Sales, fact_Sales[Line Revenue] >= 50000))

FILTER रो-दर-रो चलता है, इसलिए इसे छोटी टेबल पर या तब इस्तेमाल करें जब सादा कॉलम फ़िल्टर नियम न कह सके।

6. CALCULATE को सीधे शब्दों में पढ़ना

CALCULATE([Total Revenue], ALL(dim_Stores), dim_Products[Category] = "Kitchen") → "Total revenue, सारे स्टोर के लिए, पर सिर्फ़ Kitchen — साथ में सेल के पहले से लगे तारीख़/दूसरे फ़िल्टर।"

आम गलतियाँ

उम्मीद करना कि [North Revenue] दूसरे रीजन में blank होगा (यह फ़िल्टर बदलता है — वही चाहिए तो KEEPFILTERS)। एक dimension की जगह fact टेबल पर ALL। base measures पर बनाने की जगह हर जगह CALCULATE(SUM(...)) लिखना।

अभ्यास

mediumNorth Revenue, Region Share %, Share of Category % और Delhi+Mumbai बनाएँ। Rows में Region और Columns में Category फिर Product रखें और हर नंबर एक वाक्य में समझाएँ। जाँचें: North हिस्सा 32.0%, Electronics में Laptop का हिस्सा 46.4% (FY2025-26)।
North Revenue केवल Region बदलता है; बाकी filters रहते हैं। FY total में North 94256152.50 (31.9516%) है। Columns में Category फिर Product रखें ताकि ALL(Product) category बचाए: Electronics में Laptop share लगभग 46.4%। Category filter बिना share सभी products का होगा। City/Store filters North Revenue को सीमित कर सकते हैं।

प्रश्नोत्तरी

CALCULATE क्या बदलता है?
वह filter context जिसमें measure की गणना होती है
% of total के लिए फ़िल्टर हटाने वाला फ़ंक्शन?
ALL / REMOVEFILTERS
फ़िल्टर को सेल के फ़िल्टर से बदलने की जगह intersect कैसे करें?
KEEPFILTERS
CALCULATE — DAX का सबसे ज़रूरी फ़ंक्शन · हिंदी | ExcelWalaa