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

SUM बनाम SUMX (row context बनाम filter context)

⏱ 15 min

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

  • समस्या
  • SUM बनाम SUMX
  • दो context

समझिए

1. समस्या

Revenue = Qty × UnitPrice × (1 − Discount) — हर रो के लिए। पहले जोड़ना और बाद में गुणा करना गलत है:

तरीका FY2025-26 नतीजा
Σ(Qty × UnitPrice × (1 − Discount)) — रो-दर-रो 29,49,96,410 ✅
Σ(Qty × UnitPrice), discount अनदेखा 31,70,23,350
SUM(Qty) × SUM(UnitPrice) ≈ 8.4 × 10¹² ❌ बेतुका

(मॉड्यूल 2 के पिवट calculated fields वाला ही जाल।)

2. SUM बनाम SUMX

  • SUM(column) एक मौजूदा कॉलम जोड़ता है। तेज़ और आसान।
  • SUMX(table, expression) टेबल में रो-दर-रो चलता है, हर रो के लिए expression की गणना करता है, फिर नतीजे जोड़ता है।
Total Revenue X := SUMX(fact_Sales, fact_Sales[Qty] * fact_Sales[UnitPrice] * (1 - fact_Sales[Discount]))
Total Cost X    := SUMX(fact_Sales, fact_Sales[Qty] * RELATED(dim_Products[UnitCost]))

लेसन 2 के calculated columns वाले ही नतीजे — 50,000 रो के लिए दो अतिरिक्त कॉलम सेव किए बिना। Measures छोटे रहते हैं; मॉडल तेज़ रहता है।

3. दो context

Filter context Row context
कौन बनाता है पिवट रो/कॉलम, slicers, CALCULATE calculated columns, X-functions (SUMX, FILTER…)
मतलब "कौन-सी रो दिख रही हैं" "अभी मैं किस एक रो पर हूँ"
क्या लिख सकते हैं SUM(fact_Sales[Qty]) fact_Sales[Qty] (इस रो की वैल्यू)

Measure में अकेला fact_Sales[Qty] लिखना (न SUM, न X-function) एरर है: "A single value for column 'Qty' cannot be determined" — कोई मौजूदा रो नहीं है। SUMX एक बनाता है।

Calculated column में आप एक रो पर ही होते हैं, इसलिए fact_Sales[Qty] * fact_Sales[UnitPrice] सीधे चलता है।

4. दूसरे X-functions

Avg Line Value  := AVERAGEX(fact_Sales, fact_Sales[Qty] * fact_Sales[UnitPrice])
Biggest Order   := MAXX(fact_Sales, fact_Sales[Qty] * fact_Sales[UnitPrice] * (1 - fact_Sales[Discount]))
Avg Store Revenue := AVERAGEX(VALUES(dim_Stores[StoreName]), [Total Revenue])

आख़िरी वाला बिक्री की रो पर नहीं, स्टोर पर चलता है: हर स्टोर के लिए Total Revenue निकालता है (measure को वह स्टोर फ़िल्टर के रूप में मिलता है), फिर औसत — "प्रति स्टोर औसत revenue"। Measure के साथ dimension पर चलना बहुत आम पैटर्न है।

5. स्पीड की बातें

  • 50,000 रो पर SUMX तुरंत; करोड़ों रो पर भी सादे गणित के लिए ठीक।
  • Relationships की वजह से SUMX के अंदर RELATED कुशल है।
  • जब CALCULATE का कॉलम फ़िल्टर काफ़ी हो तब SUMX के अंदर FILTER(fact_Sales, …) से बचें।

6. कौन-सा इस्तेमाल करें?

स्थिति इस्तेमाल
कॉलम में पहले से अंतिम नंबर है (Amount) SUM
पहले हर रो पर गुणा/बदलाव (कीमत × मात्रा × discount) SUMX
हर रो की गणना का औसत/अधिकतम AVERAGEX / MAXX
स्टोर/प्रोडक्ट के बीच औसत या रैंक AVERAGEX(VALUES(dim[...]), [Measure])

आम गलतियाँ

SUM(Qty) × SUM(Price)। Measure में अकेला कॉलम लिखना। सिर्फ़ जोड़ने के लिए कई calculated columns बनाना (इसकी जगह SUMX)।

अभ्यास

mediumColumns हटाने से पहले Total Revenue और Total Cost को नए X measures से जोड़ें और बाकी dependent measures भी सुधारें। लेसन 2 के दोनों calculated columns को Total Revenue X और Total Cost X measures से बदलें, कॉलम हटाएँ, और पक्का करें कि नंबर नहीं बदले। फिर Avg Store Revenue बनाएँ और जाँचें कि यह FY टोटल ÷ 8 स्टोर के बराबर है।
FY2025-26 में SUMX revenue/cost 294996410/246194250 मिलें। Helper columns हटाने से पहले पुराने Total Revenue/Total Cost को नए X measures से जोड़ें और बाकी dependencies सुधारें। Avg Store Revenue = 294996410/8 = 36874551.25 है।

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

SUMX, SUM से अलग क्या करता है?
रो-दर-रो expression की गणना करता है, फिर जोड़ता है
"a single value for column cannot be determined" एरर का मतलब?
Measure में row context के बिना अकेला कॉलम इस्तेमाल हुआ
Row context कौन बनाता है?
Calculated columns और SUMX, FILTER जैसे X-functions
SUM बनाम SUMX (row context बनाम filter context) · हिंदी | ExcelWalaa