Calculation Groups in Power BI: Reusable DAX Patterns

Master Power BI calculation groups to eliminate DAX duplication — build reusable time intelligence, currency conversion, and formatting patterns that scale across the entire semantic model.

E
ECOSIRE Research and Development Team
|19 मार्च 202611 मिनट पढ़ें2.5k शब्द|

पावर बीआई में गणना समूह: पुन: प्रयोज्य DAX पैटर्न

40 मापों वाले एक वित्तीय मॉडल पर विचार करें: राजस्व, सकल लाभ, EBITDA, शुद्ध आय, और 36 अन्य। अब व्यवसाय चाहता है कि वर्तमान अवधि, पूर्व अवधि, अवधि-दर-अवधि परिवर्तन, YTD, पूर्व YTD और YTD परिवर्तन के लिए प्रत्येक माप उपलब्ध हो। वह 240 उपाय है. फिर वे मुद्रा रूपांतरण चाहते हैं - तीन मुद्राओं में। वह 720 उपाय है.

गणना समूहों के बिना, यह एक रखरखाव दुःस्वप्न है। गणना समूहों के साथ, समय खुफिया तर्क एक बार लिखा जाता है, मुद्रा रूपांतरण तर्क एक बार लिखा जाता है, और वे स्वचालित रूप से प्रत्येक आधार माप पर लागू होते हैं। 40 माप 40 माप के रूप में बने रहते हैं - गणना आइटम बाकी काम करते हैं।

यह मार्गदर्शिका व्यावहारिक कार्यान्वयन के माध्यम से वैचारिक आधार से गणना समूहों को शामिल करती है, जिसमें प्राथमिकता नियम, SELECTEDMEASURE() तकनीक जैसे उन्नत पैटर्न और एक ही मॉडल में कई गणना समूहों का संयोजन शामिल है।

मुख्य बातें

  • गणना समूह सैकड़ों अनावश्यक समय बुद्धिमत्ता और तुलना उपायों को कुछ गणना वस्तुओं से बदल देते हैं
  • SELECTEDMEASURE() वर्तमान में मूल्यांकन के संदर्भ में जो भी माप है उसका संदर्भ देता है - पुन: प्रयोज्य की कुंजी
  • प्राथमिकता यह नियंत्रित करती है कि जब कई समूह एक साथ लागू होते हैं तो कौन सा गणना समूह प्राथमिकता लेता है
  • गणना आइटम में FORMAT() स्ट्रिंग्स माप-जागरूक संख्या स्वरूपण को सक्षम करती हैं
  • गणना समूहों को बनाने के लिए सारणीबद्ध संपादक की आवश्यकता होती है (पावर बीआई डेस्कटॉप यूआई में मूल रूप से उपलब्ध नहीं है)
  • एकाधिक गणना समूह बातचीत कर सकते हैं - एक समय खुफिया समूह + एक मुद्रा समूह + एक परिदृश्य समूह एक साथ काम करते हैं
  • गणना समूहों का उपयोग क्या होगा-अगर परिदृश्यों को लागू करने, इकाई स्विचिंग और मुद्रा चयन प्रदर्शित करने के लिए किया जा सकता है
  • ISSELECTEDMEASURE() का उपयोग करके उपायों को विशिष्ट गणना समूहों से बाहर रखा जा सकता है

समस्या गणना समूह हल करते हैं

गणना समूहों से पहले, पावर बीआई में समय बुद्धिमत्ता का मतलब आधार मीट्रिक और समय गणना के प्रत्येक संयोजन के लिए अलग-अलग उपाय बनाना था:

Revenue = SUM(Sales[Amount])
Revenue PY = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
Revenue YTD = CALCULATE([Revenue], DATESYTD('Date'[Date]))
Revenue YTD PY = CALCULATE([Revenue], DATESYTD(SAMEPERIODLASTYEAR('Date'[Date])))
Revenue vs PY = [Revenue] - [Revenue PY]
Revenue vs PY % = DIVIDE([Revenue vs PY], [Revenue PY])

यह राजस्व के लिए 6 उपाय हैं। सकल लाभ, EBITDA, परिचालन व्यय और 7 अन्य KPI के लिए दोहराएँ - अचानक आपके पास 66 माप हैं, सभी लगभग समान फ़ार्मुलों के साथ। जब व्यवसाय समय खुफिया तर्क को बदलने के लिए कहता है (जैसे, कैलेंडर वर्ष के बजाय वित्तीय वर्ष का उपयोग करना), तो प्रत्येक उपाय को अद्यतन करने की आवश्यकता होती है।

गणना समूह इसे "हम क्या माप रहे हैं" (आधार माप) को "हम इसकी तुलना कैसे कर रहे हैं" (गणना आइटम) से अलग करके हल करते हैं। 6 वस्तुओं वाला एक गणना समूह मॉडल में प्रत्येक आधार माप के लिए 5 अतिरिक्त मापों को प्रतिस्थापित करता है।


मूल अवधारणाएँ

गणना समूह: सिमेंटिक मॉडल में बिल्कुल एक कॉलम वाली एक विशेष तालिका। कॉलम में "गणना आइटम" शामिल हैं - प्रत्येक आइटम संशोधित करता है कि स्लाइसर में चुने जाने पर या मैट्रिक्स/चार्ट में उपयोग किए जाने पर आधार माप की गणना कैसे की जाती है।

गणना आइटम: एक नामित DAX अभिव्यक्ति जो वर्तमान में मूल्यांकन किए जा रहे माप को संदर्भित करने के लिए SELECTEDMEASURE() का उपयोग करती है। प्रत्येक गणना आइटम स्लाइसर में एक पंक्ति के रूप में दिखाई देता है जो नियंत्रित करता है कि कौन सी समय अवधि या तुलना मोड दिखाया गया है।

चयनित माप(): एक DAX फ़ंक्शन जो गणना समूह के संदर्भ में वर्तमान में मूल्यांकन किए जा रहे किसी भी माप का मान लौटाता है। यही वह चीज़ है जो गणना समूहों को पुन: प्रयोज्य बनाती है - मॉडल में प्रत्येक माप पर समान आइटम सूत्र लागू होता है।

प्राथमिकता: जब कई गणना समूह एक साथ सक्रिय होते हैं (उदाहरण के लिए, एक उपयोगकर्ता समय इंटेलिजेंस स्लाइसर से "पूर्व वर्ष" और मुद्रा स्लाइसर से "यूएसडी" चुनता है), प्राथमिकता यह निर्धारित करती है कि किस समूह की गणना आइटम पहले लागू की जाती है।


सारणीबद्ध संपादक के साथ गणना समूह बनाना

पावर बीआई डेस्कटॉप में गणना समूह बनाने के लिए मूल यूआई नहीं है (2026 की शुरुआत तक)। उन्हें एक बाहरी टूल का उपयोग करके बनाया जाना चाहिए - टेबुलर एडिटर 2 (फ्री) या टेबुलर एडिटर 3 (वाणिज्यिक)।

सेटअप:

  1. GitHub से टेबुलर एडिटर 2 डाउनलोड करें (निःशुल्क, खुला स्रोत)
  2. पावर बीआई डेस्कटॉप में: बाहरी उपकरण → सारणीबद्ध संपादक
  3. टेबुलर एडिटर ओपन पावर बीआई मॉडल से जुड़ा हुआ खुलता है

एक समय खुफिया गणना समूह बनाना:

  1. सारणीबद्ध संपादक में, तालिकाएँ → नया बनाएँ → गणना समूह पर राइट-क्लिक करें
  2. इसे नाम दें Time Intelligence
  3. समूह स्वचालित रूप से एक कॉलम बनाता है - इसका नाम बदलकर Time Calculation कर दें
  4. समूह पर राइट-क्लिक करें → गणना आइटम जोड़ें → प्रत्येक आइटम को नाम दें

गणना आइटम: वर्तमान अवधि (आधार रेखा)

SELECTEDMEASURE()

यह आइटम बिना किसी संशोधन के माप को यथावत लौटाता है। जब इस आइटम का चयन किया जाता है तो प्रत्येक माप अपना सामान्य मूल्य दिखाता है।

गणना मद: पूर्व वर्ष

CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Date'[Date])
)

गणना आइटम: वर्ष-दर-तारीख

CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD('Date'[Date])
)

गणना आइटम: पूर्व वर्ष YTD

CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD(SAMEPERIODLASTYEAR('Date'[Date]))
)

गणना मद: वर्ष-दर-वर्ष परिवर्तन

SELECTEDMEASURE() -
CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Date'[Date])
)

गणना आइटम: वर्ष-दर-वर्ष परिवर्तन %

DIVIDE(
    SELECTEDMEASURE() -
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    ),
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    ),
    BLANK()
)

इन आइटम्स को बनाने के बाद, टेबुलर एडिटर (Ctrl+S) में सेव करें। परिवर्तन Power BI डेस्कटॉप पर वापस समन्वयित हो जाते हैं।

रिपोर्ट में, Time Calculation कॉलम का उपयोग करके एक स्लाइसर जोड़ें। जब उपयोगकर्ता "पूर्व वर्ष" का चयन करता है, तो किसी भी मैट्रिक्स या चार्ट में प्रत्येक माप स्वचालित रूप से अपना पूर्व-वर्ष मान दिखाता है।


फॉर्मेट स्ट्रिंग तकनीक

साल-दर-साल परिवर्तन % आइटम के साथ एक समस्या उत्पन्न होती है: यह दशमलव (15% वृद्धि के लिए 0.15) लौटाता है, लेकिन आधार माप का प्रारूप स्ट्रिंग मुद्रा के लिए है (उदाहरण के लिए, "$#,0")। प्रतिशत "$0.15" के रूप में प्रदर्शित होता है - गलत प्रारूप।

इसका समाधान गणना आइटम पर एक प्रारूप स्ट्रिंग अभिव्यक्ति सेट करना है। सारणीबद्ध संपादक में, प्रत्येक गणना आइटम में एक "फ़ॉर्मेट स्ट्रिंग एक्सप्रेशन" गुण होता है जिसमें एक DAX एक्सप्रेशन शामिल हो सकता है जो प्रारूप स्ट्रिंग को उपयोग में लाता है:

वर्ष-दर-वर्ष परिवर्तन % के लिए स्ट्रिंग अभिव्यक्ति को प्रारूपित करें:

"0.0%"

मुद्रा राशियों के लिए स्ट्रिंग अभिव्यक्ति प्रारूपित करें:

"$#,0"

चयनित माप के आधार पर गतिशील प्रारूप स्ट्रिंग:

IF(
    ISSELECTEDMEASURE([Units Sold], [Order Count]),
    "#,0",
    "$#,0.00"
)

प्रारूप स्ट्रिंग अभिव्यक्तियाँ यह पता लगाने के लिए ISSELECTEDMEASURE() का उपयोग करती हैं कि कौन सा आधार माप संदर्भ में है और उचित प्रारूप स्ट्रिंग लौटाता है। इस प्रकार एक एकल "YoY परिवर्तन %" गणना आइटम राजस्व उपायों के लिए प्रतिशत के रूप में और इकाई उपायों के लिए गणना परिवर्तन के रूप में प्रारूपित हो सकता है।


मुद्रा रूपांतरण गणना समूह

मुद्रा रूपांतरण एक अन्य क्लासिक गणना समूह उपयोग मामला है। गणना समूहों के बिना, 3 मुद्राओं में 40 माप वाले मॉडल को 120 माप की आवश्यकता होती है। एक गणना समूह के साथ, इसे मूल 40 प्लस 3 गणना आइटम की आवश्यकता होती है।

सेटअप: मॉडल में मुद्रा और तिथि के अनुसार विनिमय दरों के साथ एक CurrencyRates तालिका और स्लाइसर के लिए एक Currency आयाम तालिका होनी चाहिए।

गणना आइटम: USD (आधार मुद्रा)

SELECTEDMEASURE()

गणना आइटम: EUR

SUMX(
    VALUES('Date'[Date]),
    CALCULATE(SELECTEDMEASURE()) *
    CALCULATE(
        MAX(CurrencyRates[Rate]),
        CurrencyRates[ToCurrency] = "EUR"
    )
)

गणना आइटम: GBP

SUMX(
    VALUES('Date'[Date]),
    CALCULATE(SELECTEDMEASURE()) *
    CALCULATE(
        MAX(CurrencyRates[Rate]),
        CurrencyRates[ToCurrency] = "GBP"
    )
)

SUMX लूप प्रत्येक तिथि पर पुनरावृत्त होता है और उस तिथि के लिए विनिमय दर लागू करता है - मुद्राओं को सही ढंग से तब भी संभालता है जब दिनांक स्लाइसर विभिन्न विनिमय दरों के साथ अवधि का विस्तार करते हैं। मुद्रा समूह के Precedence को समय इंटेलिजेंस समूह से कम सेट करें (सारणी संपादक शब्दावली में कम संख्या = उच्च प्राथमिकता)।


एकाधिक गणना समूहों के बीच वरीयता नियम

जब कोई उपयोगकर्ता एक साथ दो गणना समूहों से आइटम चुनता है (उदाहरण के लिए, टाइम इंटेलिजेंस से "पूर्व वर्ष" और मुद्रा से "EUR"), पावर बीआई प्राथमिकता क्रम में उनका मूल्यांकन करता है।

प्राथमिकता को प्रत्येक गणना समूह पर एक पूर्णांक के रूप में सेट किया गया है - उच्च पूर्णांक = पहले मूल्यांकन किया गया (या "बाहरी")।

उदाहरण:

  • समय इंटेलिजेंस: वरीयता = 20 (आंतरिक मूल्यांकन)
  • मुद्रा रूपांतरण: वरीयता = 10 (मूल्यांकित बाहरी)

इस सेटअप के साथ, मुद्रा रूपांतरण आइटम टाइम इंटेलिजेंस आइटम के चारों ओर लपेटता है। "EUR" + "पूर्व वर्ष" का चयन करने से गणना होती है: पूर्व वर्ष के मूल्य (आंतरिक गणना) को EUR (बाहरी गणना) में परिवर्तित करें। प्राथमिकता क्रम को गणना के अर्थपूर्ण आशय से मेल खाना चाहिए।

अंगूठे का नियम: गणना समूह जो दिनांक संदर्भ (समय खुफिया) को संशोधित करता है, उसकी उच्च प्राथमिकता होनी चाहिए (कम प्राथमिकता संख्या, आंतरिक/बाद में मूल्यांकन किया गया)। गणना समूह जो दिनांक गणना (मुद्रा रूपांतरण, इकाई रूपांतरण) के बाद मूल्य को संशोधित करता है, उसकी प्राथमिकता कम होनी चाहिए (बाहरी/पहले मूल्यांकन किया गया)।


गणना समूहों से विशिष्ट उपायों को बाहर करना

प्रत्येक माप को प्रत्येक गणना समूह पर प्रतिक्रिया नहीं देनी चाहिए। एक "रिपोर्ट दिनांक" माप जो वर्तमान रिपोर्ट दिनांक लौटाता है उसे समय इंटेलिजेंस द्वारा संशोधित नहीं किया जाना चाहिए। वार्षिक रूप से निर्धारित "लक्ष्य मूल्य" माप को पिछले वर्ष में परिवर्तित नहीं किया जाना चाहिए।

विशिष्ट उपायों को बाहर करने के लिए गणना आइटम में ISELECTEDMEASURE() का उपयोग करें:

IF(
    ISSELECTEDMEASURE([Report Date], [Target Value], [Budget]),
    SELECTEDMEASURE(),
    CALCULATE(
        SELECTEDMEASURE(),
        SAMEPERIODLASTYEAR('Date'[Date])
    )
)

इससे "पूर्व वर्ष" आइटम को [रिपोर्ट तिथि], [लक्ष्य मूल्य], और [बजट] के लिए अपरिवर्तित बना दिया जाता है - समय खुफिया चयन की परवाह किए बिना उनके सामान्य मूल्यों को वापस कर दिया जाता है।


गणना समूहों के साथ क्या-क्या परिदृश्य विश्लेषण

गणना समूह सुंदर क्या-क्या परिदृश्य विश्लेषण सक्षम करते हैं। "बेस केस," "आशावादी," और "निराशावादी" जैसी वस्तुओं वाला एक "परिदृश्य" गणना समूह परिदृश्य-विशिष्ट माप वेरिएंट बनाए बिना राजस्व और लागत उपायों के लिए परिदृश्य गुणक लागू कर सकता है।

-- Base Case calculation item
SELECTEDMEASURE()

-- Optimistic calculation item
SWITCH(
    TRUE(),
    ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 1.15,
    ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 0.95,
    SELECTEDMEASURE()
)

-- Pessimistic calculation item
SWITCH(
    TRUE(),
    ISSELECTEDMEASURE([Revenue], [Gross Profit]), SELECTEDMEASURE() * 0.85,
    ISSELECTEDMEASURE([Operating Expenses], [COGS]), SELECTEDMEASURE() * 1.10,
    SELECTEDMEASURE()
)

उपयोगकर्ता स्लाइसर से एक परिदृश्य का चयन करते हैं; प्रत्येक वित्तीय उपाय चयनित परिदृश्य की धारणाओं को प्रतिबिंबित करने के लिए अद्यतन होता है। इसे समय खुफिया समूह के साथ संयोजित करने से अनुमति मिलती है: "मुझे पिछले वर्ष की तुलना में आशावादी परिदृश्य में Q3 राजस्व दिखाएं।"


अक्सर पूछे जाने वाले प्रश्न

क्या गणना समूह प्रीमियम के बिना पावर बीआई डेस्कटॉप में काम करते हैं?

हाँ। गणना समूह सभी पावर बीआई लाइसेंस स्तरों में काम करते हैं - वे एक सिमेंटिक मॉडल सुविधा हैं, प्रीमियम सुविधा नहीं। एकमात्र प्रीमियम आवश्यकता यह है कि उन्हें बनाने के लिए टेबुलर एडिटर का उपयोग किया जाना चाहिए, क्योंकि पावर बीआई डेस्कटॉप का मूल यूआई निर्माण का समर्थन नहीं करता है (लेकिन यह उन्हें सही ढंग से प्रस्तुत और मूल्यांकन करता है)। एक बार टेबुलर एडिटर में बन जाने के बाद, गणना समूह फ्री और प्रो सहित किसी भी कार्यक्षेत्र में काम करते हैं।

क्या मैं सारणी संपादक के बिना गणना समूह बना सकता हूं?

Power BI डेस्कटॉप नेटिव UI में, गणना समूह सीधे नहीं बनाए जा सकते (2026 की शुरुआत तक)। टेबुलर एडिटर 2 (निःशुल्क) मानक उपकरण है। वैकल्पिक रूप से, XMLA एंडपॉइंट टूल (SSMS, ALM टूलकिट) TMSL स्क्रिप्टिंग के माध्यम से गणना समूह बना सकते हैं। कुछ उपयोगकर्ता प्रोग्रामेटिक रूप से XMLA REST API कॉल के माध्यम से गणना समूह भी बनाते हैं। Microsoft ने भविष्य के रिलीज़ में मूल रूप से Power BI डेस्कटॉप में गणना समूह निर्माण जोड़ने की योजना का संकेत दिया है।

गणना समूहों के प्रदर्शन पर क्या प्रभाव पड़ता है?

समतुल्य मापों को मैन्युअल रूप से बनाने की तुलना में गणना समूह न्यूनतम ओवरहेड जोड़ते हैं। प्रत्येक SELECTEDMEASURE() मूल्यांकन संदर्भित माप के DAX को लागू करता है - समकक्ष स्पष्ट उपायों के अलावा कोई अतिरिक्त लागत नहीं होगी। वास्तव में, गणना समूह अक्सर समान मूल्यांकन पथ साझा करने वाले कम आइटम के साथ कई समान स्पष्ट उपायों (जो सभी क्वेरी कैश प्रविष्टियाँ उत्पन्न करते हैं) को प्रतिस्थापित करके मॉडल प्रदर्शन में सुधार करते हैं।

क्या गणना समूहों का उपयोग स्वतः उत्पन्न स्तंभों से निहित मापों के साथ किया जा सकता है?

गणना समूह मॉडल में परिभाषित स्पष्ट DAX उपायों पर लागू होते हैं। वे कॉलम एकत्रीकरण पर लागू नहीं होते हैं जो Power BI स्वचालित रूप से उत्पन्न करता है (जैसे किसी परिभाषित माप के बिना एक संख्यात्मक कॉलम का योग)। सर्वोत्तम अभ्यास सभी व्यावसायिक मेट्रिक्स के लिए स्पष्ट उपायों को परिभाषित करना और उन उपायों पर गणना समूहों का उपयोग करना है।

गणना समूह पंक्ति-स्तरीय सुरक्षा के साथ कैसे इंटरैक्ट करते हैं?

गणना समूह और पंक्ति-स्तरीय सुरक्षा ऑर्थोगोनल हैं - वे स्वतंत्र रूप से काम करते हैं। आरएलएस फ़िल्टर करता है कि कौन सी पंक्तियाँ उपयोगकर्ता को दिखाई देती हैं; गणना समूह संशोधित करते हैं कि उन दृश्यमान पंक्तियों के मापों की गणना कैसे की जाती है। संयोजन सही ढंग से काम करता है: आरएलएस डेटा को सीमित करता है, फिर गणना समूह का आइटम माप तर्क को बदल देता है। सही ढंग से कार्यान्वित आरएलएस और गणना समूहों के बीच कोई ज्ञात टकराव नहीं है।

गणना समूहों और फ़ील्ड मापदंडों के बीच क्या अंतर है?

गणना समूह संशोधित करते हैं कि मापों की गणना कैसे की जाती है (समय परिवर्तन, मुद्रा रूपांतरण, परिदृश्य समायोजन लागू करना)। फ़ील्ड पैरामीटर उपयोगकर्ताओं को यह चुनने की अनुमति देते हैं कि विज़ुअलाइज़ेशन में कौन सा माप या कॉलम दिखाई देता है - एक चार्ट में राजस्व, लाभ और इकाइयों के बीच अदला-बदली। वे विभिन्न समस्याओं को हल करते हैं और एक साथ उपयोग किए जा सकते हैं: आधार माप का चयन करने के लिए फ़ील्ड पैरामीटर, उस माप के लिए समय तुलना चुनने के लिए गणना समूह।


अगले चरण

रखरखाव योग्य, स्केलेबल पावर बीआई सिमेंटिक मॉडल के निर्माण के लिए गणना समूह सबसे शक्तिशाली उपकरणों में से एक हैं। सही ढंग से कार्यान्वित, वे DAX दोहराव को खत्म करते हैं, मॉडल जटिलता को कम करते हैं, और मॉडल को विस्तार योग्य बनाते हैं - एक नई समय खुफिया अवधि जोड़ने का मतलब एक गणना आइटम जोड़ना है, न कि दर्जनों उपायों को फिर से लिखना।

ECOSIRE की पावर बीआई डेटा मॉडलिंग सेवाएं में सिमेंटिक मॉडल विकास के हिस्से के रूप में गणना समूह डिजाइन और कार्यान्वयन शामिल है। इस बात पर चर्चा करने के लिए हमसे संपर्क करें कि गणना समूह आपके वर्तमान मॉडल को कैसे सरल बना सकते हैं या आपके अगले कार्यान्वयन में सुधार कर सकते हैं।

E

लेखक

ECOSIRE Research and Development Team

ECOSIRE में एंटरप्राइज़-ग्रेड डिजिटल उत्पाद बना रहे हैं। Odoo एकीकरण, ई-कॉमर्स ऑटोमेशन, और AI-संचालित व्यावसायिक समाधानों पर अंतर्दृष्टि साझा कर रहे हैं।

WhatsApp पर चैट करें