DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলি ডেটা বিশ্লেষণের জন্য অত্যন্ত কার্যকরী, বিশেষ করে complex calculations এবং aggregation তৈরি করার জন্য। DAX এ Aggregation Techniques ব্যবহার করে আপনি ডেটা সেটের উপর শক্তিশালী এবং কাস্টম ক্যালকুলেশন করতে পারেন, যেমন conditional aggregation, time intelligence aggregation, এবং filter-based aggregation।
এই প্রবন্ধে আমরা complex calculations এবং aggregation techniques এর জন্য কিছু গুরুত্বপূর্ণ DAX ফাংশন এবং তাদের ব্যবহার নিয়ে আলোচনা করব।
১. SUM, AVERAGE, COUNT ফাংশন দ্বারা সাধারণ Aggregation
DAX এর SUM, AVERAGE, এবং COUNT ফাংশনগুলি সাধারণত ব্যবহার হয় ডেটার মোট যোগফল, গড় এবং গণনা নির্ধারণ করতে। এই ফাংশনগুলো সহজতর ক্যালকুলেশনের জন্য ব্যবহৃত হয়।
Example:
ধরা যাক, আপনি Sales টেবিল থেকে মোট বিক্রয় (Sales) পরিমাণ এবং গড় বিক্রয় পরিমাণ বের করতে চান:
Total Sales = SUM(Sales[Amount])
Average Sales = AVERAGE(Sales[Amount])
এখানে, SUM ফাংশনটি Sales[Amount] এর মোট যোগফল নির্ধারণ করবে, এবং AVERAGE ফাংশনটি গড় বিক্রয় পরিমাণ বের করবে।
২. Conditional Aggregation: IF ও SWITCH ফাংশন
Conditional aggregation ব্যবহৃত হয় যখন আপনি শর্তসাপেক্ষে গণনা করতে চান, যেমন বিক্রয় পরিমাণ 1000 এর বেশি হলে বিশেষ একটি মূল্য বের করা।
IF ফাংশন:
IF ফাংশনটি শর্তসাপেক্ষ গণনা করার জন্য ব্যবহৃত হয়, যা একটি logical test এর ভিত্তিতে ক্যালকুলেশন পরিবর্তন করে।
High Value Sales = IF(Sales[Amount] > 1000, Sales[Amount], 0)
এখানে, IF ফাংশনটি যদি Sales[Amount] 1000 এর বেশি হয়, তবে সেই মানকে ফেরত দেবে, অন্যথায় 0 প্রদান করবে।
SWITCH ফাংশন:
SWITCH ফাংশনটি একাধিক শর্তের ভিত্তিতে বিভিন্ন ক্যালকুলেশন করতে ব্যবহৃত হয়। এটি অনেকগুলো IF শর্তের সমান কাজ করে।
Sales Category = SWITCH(
TRUE(),
Sales[Amount] > 1000, "High",
Sales[Amount] > 500, "Medium",
"Low"
)
এখানে, SWITCH ফাংশনটি বিক্রয় পরিমাণের ভিত্তিতে Sales Category নির্ধারণ করবে।
৩. FILTER এবং CALCULATE ফাংশন দিয়ে Conditional Aggregation
FILTER এবং CALCULATE ফাংশন ব্যবহার করে আপনি complex filtering এবং conditional aggregation করতে পারেন। CALCULATE ফাংশনটি filter context পরিবর্তন করতে ব্যবহৃত হয়, যা এক্সপ্রেশন বা ক্যালকুলেশনের ফলাফল পরিবর্তন করে।
Example:
ধরা যাক, আপনি Sales টেবিল থেকে Region "East" এর জন্য মোট বিক্রয়ের পরিমাণ বের করতে চান:
Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")
এখানে, CALCULATE ফাংশনটি SUM ফাংশনের ফলাফল পরিবর্তন করবে এবং শুধু Sales[Region] = "East" শর্তের সাথে মিলিয়ে মোট বিক্রয় পরিমাণ হিসাব করবে।
Advanced Filtering with FILTER:
আপনি যদি Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করতে চান, যেখানে Amount 1000 এর বেশি এবং Region "East", তাহলে FILTER ফাংশন ব্যবহার করতে পারেন:
High Sales in East = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Amount] > 1000 && Sales[Region] = "East"))
এখানে, FILTER ফাংশনটি Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করবে যেখানে Amount 1000 এর বেশি এবং Region "East"।
৪. Time Intelligence Functions দিয়ে Aggregation
Time Intelligence Functions DAX-এ ব্যবহার করে আপনি সহজে Year-to-Date (YTD), Quarter-to-Date (QTD), এবং Month-to-Date (MTD) এর মতো সময়ভিত্তিক aggregation করতে পারেন।
TOTALYTD ফাংশন:
ধরা যাক, আপনি যদি Sales টেবিলের YTD Sales বের করতে চান:
YTD Sales = TOTALYTD(SUM(Sales[Amount]), Sales[Date])
এটি Sales[Amount] এর Year-to-Date যোগফল প্রদান করবে, যেখানে Sales[Date] কলামটি তারিখের তথ্য ধারণ করবে।
SAMEPERIODLASTYEAR ফাংশন:
যদি আপনি Sales টেবিলের গত বছরের একই সময়ের বিক্রয় পরিমাণ তুলনা করতে চান:
Sales Last Year = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Sales[Date]))
এটি Sales[Amount] এর মোট যোগফল দিবে গত বছরের একই সময়ের জন্য।
DATEADD ফাংশন:
DATEADD ফাংশনটি একটি নির্দিষ্ট পরিমাণ সময় (যেমন, মাস, বছর) add বা subtract করে ডেটার হিসাব করতে ব্যবহৃত হয়।
Sales Previous Year = CALCULATE(SUM(Sales[Amount]), DATEADD(Sales[Date], -1, YEAR))
এটি Sales টেবিলের Amount এর মোট যোগফল দেবে এক বছর আগের Sales[Date] অনুযায়ী।
৫. Advanced Aggregation Techniques: SUMX, AVERAGEX, COUNTX
X Functions যেমন SUMX, AVERAGEX, এবং COUNTX ফাংশনগুলি iterators হিসেবে কাজ করে। এগুলি row-by-row গণনা করতে ব্যবহৃত হয়, এবং একটি টেবিল বা এক্সপ্রেশন থেকে সমস্ত সারির উপর গণনা করে তাদের যোগফল, গড় বা গণনা নির্ধারণ করে।
SUMX:
SUMX ফাংশনটি একটি এক্সপ্রেশন বা টেবিলের উপর ভিত্তি করে row-by-row যোগফল নির্ধারণ করে।
Total Sales = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])
এখানে, SUMX ফাংশনটি Sales[Quantity] এবং Sales[UnitPrice] এর গুণফল বের করবে এবং তার যোগফল প্রদান করবে।
AVERAGEX:
AVERAGEX ফাংশনটি একটি টেবিল বা এক্সপ্রেশন থেকে গড় নির্ধারণ করে।
Average Sales = AVERAGEX(Sales, Sales[Quantity] * Sales[UnitPrice])
এটি Sales টেবিলের জন্য গড় বিক্রয় নির্ধারণ করবে, যেখানে প্রতিটি সারির জন্য Quantity এবং UnitPrice এর গুণফল গুন করা হবে।
COUNTX:
COUNTX ফাংশনটি একটি টেবিলের উপর row-by-row গণনা করে, এবং আপনি যেকোনো এক্সপ্রেশন ব্যবহার করতে পারেন।
Count High Value Sales = COUNTX(FILTER(Sales, Sales[Amount] > 1000), Sales[Amount])
এটি Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডের সংখ্যা গণনা করবে যেখানে Amount 1000 এর বেশি।
৬. Aggregation with DISTINCT
কখনো কখনো, আপনি distinct values এর ভিত্তিতে ক্যালকুলেশন করতে চাইতে পারেন, যেমন কোনো এক্সপ্রেশন বা মেট্রিকের ভিন্ন ভিন্ন মানের উপর ভিত্তি করে।
Example: Distinct Count of Salespersons
Distinct Salespersons = DISTINCTCOUNT(Sales[SalespersonID])
এটি Sales টেবিল থেকে বিভিন্ন বিক্রয় প্রতিনিধির সংখ্যা বের করবে।
সারাংশ
Complex Aggregation Techniques ব্যবহার করে DAX-এর মাধ্যমে আপনি শক্তিশালী এবং কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। SUM, AVERAGE, COUNT, FILTER, CALCULATE, TIME INTELLIGENCE, এবং X Functions ব্যবহার করে আপনি শর্তসাপেক্ষ aggregation, time-based calculations, এবং complex conditional logic তৈরি করতে পারেন। DAX-এর এই ফাংশনগুলির ব্যবহার ডেটা বিশ্লেষণ, রিপোর্টিং এবং ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য অত্যন্ত কার্যকরী।
Read more