DAX (Data Analysis Expressions) একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। CALCULATE ফাংশনটি DAX-এর সবচেয়ে গুরুত্বপূর্ণ এবং বহুল ব্যবহৃত ফাংশনগুলির মধ্যে একটি। এটি কাস্টম ক্যালকুলেশন তৈরি করতে এবং filter context পরিবর্তন করতে ব্যবহৃত হয়। একে বলা হয় context transition এর জন্য গুরুত্বপূর্ণ ফাংশন।
এছাড়াও, Row Context হলো একটি গুরুত্বপূর্ণ কনসেপ্ট যা ডেটার রো বা সারির উপর কাজ করার সময় গুরুত্বপূর্ণ। এই প্রবন্ধে, আমরা CALCULATE ফাংশন এবং Row Context এর ভূমিকা সম্পর্কে বিস্তারিতভাবে আলোচনা করব।
১. CALCULATE ফাংশন:
CALCULATE ফাংশনটি DAX-এ কাস্টম ক্যালকুলেশন তৈরি করতে ব্যবহৃত হয় এবং এটি filter context পরিবর্তন করতে সক্ষম। এটি DAX-এর মধ্যে সবচেয়ে শক্তিশালী ফাংশনগুলির মধ্যে একটি, কারণ এটি ডেটার উপর dynamic filtering প্রয়োগ করতে সক্ষম। CALCULATE ফাংশনটি একটি এক্সপ্রেশন বা ক্যালকুলেশন গ্রহণ করে এবং তার উপর নির্দিষ্ট ফিল্টার প্রয়োগ করে।
Syntax:
CALCULATE(<expression>, <filter1>, <filter2>, ...)
- : এটি একটি গণনা বা ক্যালকুলেশন যা আপনি করতে চান।
- , , ...: এক বা একাধিক filter যা আপনি ক্যালকুলেশনের উপর প্রয়োগ করতে চান।
ব্যবহার:
CALCULATE ফাংশনটি SUM, AVERAGE, COUNT, MAX ইত্যাদি ফাংশনের সাথে ব্যবহার করে কাস্টম ক্যালকুলেশন তৈরি করতে সহায়ক।
উদাহরণ:
ধরা যাক, আপনি Sales টেবিল থেকে Amount এর মোট যোগফল বের করতে চান যেখানে Region "North" এবং Amount 1000 এর বেশি:
Total Sales in North = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "North", Sales[Amount] > 1000)
এখানে:
- CALCULATE ফাংশনটি Sales[Amount] এর মোট যোগফল বের করবে, তবে শুধুমাত্র সেই রেকর্ডগুলির জন্য যেখানে Region "North" এবং Amount 1000 এর বেশি।
- Sales[Region] = "North" এবং Sales[Amount] > 1000 ফিল্টারগুলি filter context তৈরি করবে।
Real-world Example:
CALCULATE ফাংশনটি ব্যবহার করা হয় যখন আপনাকে একটি ক্যালকুলেশন করতে হয় এবং একই সময়ে নির্দিষ্ট শর্ত বা ফিল্টার প্রয়োগ করতে হয়, যেমন Year-to-Date (YTD) বিক্রয় বা Quarter-to-Date (QTD) বিশ্লেষণ।
২. Row Context:
Row Context হল DAX-এর একটি গুরুত্বপূর্ণ কনসেপ্ট, যা তখন সৃষ্টি হয় যখন আপনি কোনো calculated column বা iterator function ব্যবহার করেন। Row Context প্রতিটি সারি বা রো-ভিত্তিক গণনা করার জন্য ব্যবহৃত হয়, যেমন SUMX, AVERAGEX, COUNTX ইত্যাদি ফাংশনের মাধ্যমে। Row Context তৈরি হলে, DAX প্রতিটি সারির জন্য আলাদা গণনা করে এবং তারপরে সেই গণনা সংশ্লিষ্ট এক্সপ্রেশন অনুযায়ী কাজ করে।
Row Context উদাহরণ:
ধরা যাক, আপনি একটি Sales টেবিলের জন্য একটি calculated column তৈরি করতে চান যেখানে Sales[Amount] এবং Sales[Discount] এর গুণফল বের হবে:
Total Price = Sales[Amount] * Sales[Discount]
এখানে, Row Context তৈরি হচ্ছে কারণ DAX প্রতিটি Sales টেবিলের সারি জন্য Sales[Amount] এবং Sales[Discount] এর গুণফল বের করবে।
Row Context এর অন্যান্য উদাহরণ:
SUMX ফাংশন:
Total Sales = SUMX(Sales, Sales[Amount] * Sales[Quantity])এখানে, SUMX ফাংশনটি Sales টেবিলের প্রতিটি সারির জন্য Sales[Amount] এবং Sales[Quantity] গুণ করবে এবং তারপরে সব গুণফলের যোগফল প্রদান করবে। এতে Row Context তৈরি হচ্ছে, কারণ প্রতিটি সারির জন্য গাণিতিক ক্যালকুলেশন করা হচ্ছে।
৩. Row Context এবং Filter Context এর পার্থক্য
| Context Type | Row Context | Filter Context |
|---|---|---|
| সংজ্ঞা | প্রতিটি সারির জন্য এক্সপ্রেশন বা ক্যালকুলেশন প্রয়োগ করা হয়। | টেবিলের মধ্যে ডেটা ফিল্টার করা হয় এবং তার উপর নির্দিষ্ট ক্যালকুলেশন করা হয়। |
| কিভাবে কাজ করে | DAX একটি টেবিলের প্রতিটি সারির উপর কাজ করে এবং প্রতিটি সারির জন্য আলাদা ক্যালকুলেশন করা হয়। | CALCULATE বা FILTER ফাংশনের মাধ্যমে একটি নির্দিষ্ট ফিল্টার প্রয়োগ করা হয়। |
| উদাহরণ | Calculated columns তৈরি করা যেখানে প্রতিটি সারির উপর ক্যালকুলেশন করা হয়। | Measures তৈরি করা যেখানে ফিল্টার কনটেক্সটের ভিত্তিতে গণনা করা হয়। |
৪. CALCULATE এবং Row Context
CALCULATE ফাংশনটি Row Context এবং Filter Context এর মধ্যে পার্থক্য তৈরি করতে ব্যবহৃত হয়। এটি filter context পরিবর্তন করতে সক্ষম, কিন্তু এটি row context কে বজায় রাখতে সাহায্য করে, যাতে প্রতিটি সারির উপর সঠিকভাবে গণনা করা যায়।
Example: CALCULATE with Row Context
ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান যেখানে Region "East" এবং ProductID 123 এর জন্য কাস্টম ক্যালকুলেশন করতে চান:
Total Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East", Sales[ProductID] = 123)
এখানে:
- CALCULATE ফাংশনটি Sales[Amount] এর মোট যোগফল বের করবে, তবে শুধুমাত্র Region "East" এবং ProductID 123 এর জন্য।
- এই ক্ষেত্রে, CALCULATE ফাংশনটি Row Context বজায় রেখে filter context তৈরি করবে।
৫. CALCULATE এবং Filter Context
CALCULATE ফাংশনটি filter context তৈরি করতে ব্যবহৃত হয়, যা একটি এক্সপ্রেশন বা গণনা পরিবর্তন করতে সাহায্য করে। আপনি যখন CALCULATE ফাংশন ব্যবহার করেন, তখন আপনি একাধিক ফিল্টার প্রয়োগ করতে পারেন, যা ডেটার উপর নির্দিষ্ট শর্ত যোগ করবে।
Example: CALCULATE with Filter Context
ধরা যাক, আপনি Sales টেবিলের জন্য Year-to-Date (YTD) বিক্রয় পরিমাণ বের করতে চান:
YTD Sales = CALCULATE(SUM(Sales[Amount]), DATESYTD(Sales[Date]))
এখানে:
- DATESYTD(Sales[Date]) ফাংশনটি Sales[Date] কলামের জন্য YTD ডেটার ফিল্টার তৈরি করবে।
- CALCULATE ফাংশনটি এই filter context এর উপর ভিত্তি করে Sales[Amount] এর মোট যোগফল নির্ধারণ করবে।
সারাংশ
CALCULATE ফাংশনটি DAX-এ row context এবং filter context এর মধ্যে সম্পর্ক এবং কার্যকারিতা পরিচালনা করতে ব্যবহৃত হয়। এটি filter context পরিবর্তন করতে সহায়ক এবং একই সময়ে row context বজায় রেখে কাস্টম ক্যালকুলেশন তৈরি করতে পারে। Row Context হল সেই কনসেপ্ট যা একটি টেবিলের প্রতিটি সারির উপর এক্সপ্রেশন বা ক্যালকুলেশন প্রয়োগ করতে সহায়ক এবং Filter Context হল সেই কনসেপ্ট যা ডেটার ফিল্টার প্রভাব নিয়ন্ত্রণ করে। CALCULATE ফাংশনের দক্ষ ব্যবহার আপনার measures এবং calculated columns এর সঠিক এবং দ্রুত ক্যালকুলেশন করতে সহায়ক হয়।
Read more