DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। RANKX একটি গুরুত্বপূর্ণ DAX ফাংশন যা ডেটার মধ্যে ranking তৈরি করতে ব্যবহৃত হয়, যেমন বিক্রয় পরিমাণ, পণ্য, অথবা অন্য কোনো মেট্রিক্স অনুযায়ী র্যাঙ্ক নির্ধারণ করা।
RANKX ফাংশনটি বিশেষভাবে ব্যবহৃত হয় যখন আপনি কোনো ডেটাসেটের মধ্যে একটি নির্দিষ্ট পরিমাপের ভিত্তিতে rank (অথবা অবস্থান) নির্ধারণ করতে চান। এটি খুবই উপকারী যখন আপনি দেখতে চান কোন আইটেম বা একক বেশি, কম, বা সমান অবস্থানে আছে।
RANKX Function এর Syntax
RANKX(<table>, <expression>, [<value>, <order>, <ties>])
- : একটি টেবিল বা এক্সপ্রেশন, যেটি র্যাঙ্কের জন্য ব্যবহৃত হবে।
- : সেই এক্সপ্রেশন বা মান যা ভিত্তি করে র্যাঙ্ক নির্ধারণ করা হবে।
- []: ঐচ্ছিক, এটি কাস্টম মান প্রদান করে যেটি সারির জন্য র্যাঙ্ক নির্ধারণ করতে ব্যবহৃত হয়।
- []: ঐচ্ছিক, র্যাঙ্কের ক্রম নির্ধারণ করা হয় (ASCENDING বা DESCENDING)। ডিফল্ট হলো DESCENDING।
- []: ঐচ্ছিক, একাধিক একসাথে র্যাঙ্ক হলে কীভাবে তা পরিচালিত হবে, যেমন Skip বা Dense।
RANKX ফাংশনের উদাহরণ
ধরা যাক, আপনি একটি Sales টেবিলের মধ্যে SalesAmount অনুযায়ী বিক্রয়ের অবস্থান (rank) বের করতে চান। এই ক্ষেত্রে RANKX ফাংশনটি ব্যবহার করা হবে।
1. SalesAmount অনুযায়ী Rank নির্ধারণ করা
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
DESC,
Dense
)
এখানে:
- ALL(Sales): Sales টেবিলের সমস্ত সারি এবং ডেটা থেকে ফিল্টার সরিয়ে নেবে, যাতে সমস্ত ডেটা ব্যবহৃত হয় র্যাঙ্ক নির্ধারণ করতে।
- Sales[SalesAmount]: এই কলামটি ব্যবহার করে SalesAmount অনুযায়ী র্যাঙ্ক নির্ধারণ করা হবে।
- DESC: র্যাঙ্ক ডাউনলোড করা হবে, অর্থাৎ, সর্বোচ্চ বিক্রয় প্রথমে র্যাঙ্ক হবে।
- Dense: যদি একাধিক পণ্য একই র্যাঙ্ক পায়, তাহলে পরবর্তী র্যাঙ্কটি আগের র্যাঙ্কের পরে একটি ধারাবাহিক সংখ্যা হবে (যেমন, 1, 2, 2, 4)।
2. RANKX-এর সাথে FILTER ব্যবহার করা
ধরা যাক, আপনি যদি শুধুমাত্র একটি নির্দিষ্ট অঞ্চলের (Region) বিক্রয় অনুযায়ী র্যাঙ্ক নির্ধারণ করতে চান, তাহলে FILTER ফাংশন ব্যবহার করতে পারেন:
Sales Rank by Region = RANKX(
FILTER(Sales, Sales[Region] = "East"),
Sales[SalesAmount],
,
DESC,
Dense
)
এখানে:
- FILTER(Sales, Sales[Region] = "East"): Sales টেবিলকে Region = "East" শর্তে ফিল্টার করা হবে।
- এরপর, SalesAmount অনুযায়ী র্যাঙ্ক নির্ধারণ করা হবে।
3. RANKX with Custom Measure
আপনি একটি কাস্টম মেজার তৈরি করে RANKX এর মাধ্যমে র্যাঙ্ক নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি Profit এবং SalesAmount এর ভিত্তিতে Rank নির্ধারণ করতে চান:
Profit Rank = RANKX(
ALL(Sales),
[Total Profit] / SUM(Sales[SalesAmount]),
,
DESC,
Dense
)
এখানে:
- [Total Profit] একটি কাস্টম মেজার, যা Sales টেবিলের Profit নির্ধারণ করে।
- তারপর, মেজারটি SalesAmount এর সাথে তুলনা করে র্যাঙ্ক বের করা হবে।
RANKX-এ Ties Management
RANKX ফাংশনে ties (একই র্যাঙ্কে একাধিক আইটেম থাকা) ব্যবস্থাপনা করার জন্য দুটি বিকল্প রয়েছে:
১. Skip (ডিফল্ট):
যখন একাধিক আইটেম একই র্যাঙ্ক পায়, তখন পরবর্তী র্যাঙ্ক skip হয়ে যায়। যেমন, যদি দুটি আইটেম র্যাঙ্ক 1 পায়, তবে পরবর্তী আইটেম র্যাঙ্ক 3 পাবে (অর্থাৎ, 2 র্যাঙ্ক বাদ পড়বে)।
২. Dense:
যখন একাধিক আইটেম একই র্যাঙ্ক পায়, তখন পরবর্তী র্যাঙ্কটি ধারাবাহিকভাবে দেওয়া হয়। যেমন, যদি দুটি আইটেম র্যাঙ্ক 1 পায়, তবে পরবর্তী আইটেম র্যাঙ্ক 2 পাবে (অর্থাৎ, কোনো র্যাঙ্ক বাদ পড়বে না)।
RANKX এবং ORDER BY
আপনি RANKX ফাংশনটি ডেটাকে ascending অথবা descending অর্ডারে সাজিয়ে র্যাঙ্ক করতে ব্যবহার করতে পারেন। এতে, RANKX ডেটা অর্ডারের ভিত্তিতে র্যাঙ্ক নির্ধারণ করবে।
Descending Order (ডিফল্ট):
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
DESC
)
Ascending Order:
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
ASC
)
সারাংশ
RANKX হল একটি শক্তিশালী DAX ফাংশন যা ডেটার মধ্যে ranking বা অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। এটি বিভিন্ন filter context, aggregation, এবং grouping প্রয়োগ করে ডেটাকে র্যাঙ্ক করার ক্ষমতা প্রদান করে। আপনি RANKX ফাংশনটি SalesAmount, Profit, বা অন্য যেকোনো মেট্রিক্সের উপর ভিত্তি করে ডেটার মধ্যে র্যাঙ্ক বের করতে ব্যবহার করতে পারেন। এছাড়া, ties ব্যবস্থাপনা এবং ascending/descending order দিয়ে কাস্টম র্যাঙ্ক তৈরি করা যায়।
Read more