DAX (Data Analysis Expressions)-এ CALCULATE ফাংশনটি একটি অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী টুল যা filter context এবং calculation context পরিবর্তন করতে ব্যবহৃত হয়। এটি ডেটার উপর বিভিন্ন ধরনের filter manipulation করতে সক্ষম, যেমন ফিল্টার যোগ করা, ফিল্টার সরানো বা কাস্টম ফিল্টার তৈরি করা। CALCULATE ফাংশনের মাধ্যমে আপনি ডেটার বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন করতে পারেন, যা বিশেষভাবে business intelligence রিপোর্টিং এবং financial analysis এর জন্য উপকারী।
এই প্রবন্ধে, আমরা CALCULATE ফাংশন ব্যবহার করে filter manipulation কিভাবে করা যায়, তা বিস্তারিতভাবে আলোচনা করব।
১. CALCULATE ফাংশনের সেন্ট্যাক্স
CALCULATE ফাংশনের সেন্ট্যাক্স নিম্নরূপ:
CALCULATE(<expression>, <filter1>, <filter2>, ...)
- : এটি সেই এক্সপ্রেশন বা গণনা যা আপনি করতে চান।
- , , ...: এক বা একাধিক ফিল্টার শর্ত যা আপনি প্রয়োগ করতে চান। ফিল্টারগুলির মধ্যে logical expressions বা table filters থাকতে পারে।
CALCULATE ফাংশনটি একটি এক্সপ্রেশন তৈরি করে এবং সেই এক্সপ্রেশনের উপর নির্দিষ্ট ফিল্টার প্রয়োগ করে ফলাফল পরিবর্তন করে।
২. Filter Manipulation with CALCULATE
CALCULATE ফাংশনটি filter context পরিবর্তন করার জন্য ব্যবহৃত হয়। Filter context হল ডেটা সেটের উপর প্রযোজ্য ফিল্টারগুলির সেট, যা CALCULATE ফাংশনটি ডেটা ক্যালকুলেশন করার সময় পরিবর্তন করতে পারে।
Use Case 1: Basic Filter Manipulation
ধরা যাক, আপনি Sales টেবিলের মোট বিক্রয় পরিমাণ বের করতে চান, কিন্তু Region ফিল্টার "East" রাখবেন। আপনি CALCULATE ফাংশন ব্যবহার করতে পারেন:
Total Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")
এখানে:
- SUM(Sales[Amount]) হল এক্সপ্রেশন যা Sales[Amount] এর মোট যোগফল বের করে।
- Sales[Region] = "East" হল ফিল্টার শর্ত যা শুধুমাত্র "East" অঞ্চলের বিক্রয় পরিমাণ গণনা করতে সহায়ক।
এটি Sales[Amount] এর মোট যোগফল প্রদান করবে, কিন্তু শুধুমাত্র "East" অঞ্চলের বিক্রয় হিসাব করা হবে।
Use Case 2: Removing Filters
ধরা যাক, আপনি চান যে Region কলামের ফিল্টার মুছে ফেলা হোক, তবে অন্যান্য সব ফিল্টার থাকে। আপনি ALL ফাংশন ব্যবহার করে এটি করতে পারেন:
Total Sales All Regions = CALCULATE(SUM(Sales[Amount]), ALL(Sales[Region]))
এখানে:
- ALL(Sales[Region]) ফিল্টারটি Sales[Region] কলামের সকল ফিল্টার মুছে ফেলবে এবং Sales[Amount] এর মোট যোগফল বের করবে সমস্ত অঞ্চলের জন্য।
এটি Sales[Amount] এর মোট যোগফল বের করবে, তবে Region কলামের ফিল্টার প্রভাব মুক্ত থাকবে।
Use Case 3: Adding Multiple Filters
CALCULATE ফাংশনটির মাধ্যমে একাধিক ফিল্টার প্রয়োগ করা যায়। ধরুন, আপনি চান যে Sales টেবিলের Amount এর মোট যোগফল বের করা হোক, যেখানে Region "East" এবং ProductCategory "Electronics" হবে:
Sales in East Electronics = CALCULATE(
SUM(Sales[Amount]),
Sales[Region] = "East",
Sales[ProductCategory] = "Electronics"
)
এখানে:
- Sales[Region] = "East" এবং Sales[ProductCategory] = "Electronics" ফিল্টার দুটি একযোগে প্রয়োগ করা হয়েছে, যার মাধ্যমে শুধুমাত্র East অঞ্চলের এবং Electronics পণ্যের বিক্রয় পরিমাণ বের করা হবে।
Use Case 4: Using Advanced Filters with Functions
CALCULATE ফাংশনটির সাথে আপনি জটিল ফিল্টার শর্তও প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, আপনি চান যে Sales টেবিল থেকে Amount এর যোগফল বের করা হোক, কিন্তু শুধুমাত্র সেই বিক্রয়গুলোকে অন্তর্ভুক্ত করা হবে যেখানে Amount 1000 এর বেশি এবং Discount 5% এর বেশি হবে:
Sales Above 1000 with Discount = CALCULATE(
SUM(Sales[Amount]),
Sales[Amount] > 1000,
Sales[Discount] > 0.05
)
এখানে:
- Sales[Amount] > 1000 এবং Sales[Discount] > 0.05 ফিল্টার দুটি শর্ত হিসেবে প্রয়োগ করা হয়েছে, যার মাধ্যমে শুধুমাত্র সেই বিক্রয় পরিমাণের যোগফল বের করা হবে যেখানে Amount 1000 এর বেশি এবং Discount 5% এর বেশি।
৩. CALCULATE with Time Intelligence
Time Intelligence ফাংশনগুলি CALCULATE ফাংশনের সাথে ব্যবহার করা হয় যখন আপনি time-based filtering করতে চান, যেমন YTD (Year to Date), QTD (Quarter to Date), MTD (Month to Date) ইত্যাদি।
Use Case: YTD Sales Calculation
ধরা যাক, আপনি Sales টেবিল থেকে Year-to-Date (YTD) বিক্রয় পরিমাণ বের করতে চান, যেখানে Sales[Date] কলামটি তারিখের তথ্য ধারণ করছে:
YTD Sales = CALCULATE(
SUM(Sales[Amount]),
DATESYTD(Sales[Date])
)
এখানে:
- DATESYTD(Sales[Date]) ফাংশনটি Sales[Date] কলামের মাধ্যমে বছরের প্রথম দিন থেকে বর্তমান তারিখ পর্যন্ত সমস্ত বিক্রয় পরিমাণকে অন্তর্ভুক্ত করবে।
এটি Sales টেবিল থেকে বছরের শুরু থেকে বর্তমান তারিখ পর্যন্ত মোট বিক্রয় পরিমাণ বের করবে।
৪. CALCULATE with USERELATIONSHIP
USERELATIONSHIP ফাংশনটি ব্যবহৃত হয় যখন আপনি ডিফল্ট সম্পর্কটি ব্যবহার না করে অন্য একটি সম্পর্ক ব্যবহার করতে চান। এটি inactive relationships সক্রিয় করার জন্য সহায়ক।
Use Case: Using Inactive Relationship
ধরা যাক, আপনার Sales এবং Date টেবিলের মধ্যে দুটি সম্পর্ক রয়েছে, কিন্তু একটি সম্পর্ক inactive (অকার্যকর) অবস্থায় আছে। আপনি যদি সক্রিয় সম্পর্কটি ব্যবহার করতে চান, তবে USERELATIONSHIP ব্যবহার করতে পারেন:
Total Sales Last Year = CALCULATE(
SUM(Sales[Amount]),
USERELATIONSHIP(Sales[OrderDate], Date[Date])
)
এখানে:
- USERELATIONSHIP(Sales[OrderDate], Date[Date]) ফাংশনটি Sales[OrderDate] এবং Date[Date] এর মধ্যে inactive relationship সক্রিয় করবে এবং তারপরে Sales[Amount] এর মোট যোগফল বের করবে।
৫. Performance Considerations
CALCULATE ফাংশন ব্যবহার করার সময় কিছু পারফরম্যান্স সতর্কতা অবলম্বন করা প্রয়োজন:
- Filter context পরিবর্তন করার ফলে ডেটার বিশ্লেষণ প্রক্রিয়া ধীর হতে পারে। অতএব, ফিল্টারগুলির সংখ্যা সীমিত রাখুন এবং এক্সপ্রেশনগুলি দ্রুত তৈরি করুন।
- CALCULATE ফাংশনের মধ্যে FILTER ব্যবহার করলে rows সিলেকশন করা হয়, যা অধিক ডেটা নিয়ে কাজ করার সময় পারফরম্যান্সে প্রভাব ফেলতে পারে।
সারাংশ
CALCULATE ফাংশনটি DAX-এ filter manipulation এবং context transition করতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি ডেটার উপর বিভিন্ন ফিল্টার প্রয়োগ করতে, এক্সপ্রেশন পরিবর্তন করতে এবং কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। CALCULATE ফাংশনের মাধ্যমে আপনি time intelligence, inactive relationships, এবং complex filters প্রয়োগ করতে সক্ষম হন, যা Power BI এবং Excel-এ শক্তিশালী বিশ্লেষণ এবং রিপোর্ট তৈরি করতে সাহায্য করে।
Read more