DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। Dynamic Ranking এবং Filtering Techniques DAX-এর এমন দুটি শক্তিশালী কৌশল যা ব্যবহারকারীদের ডেটার উপর বাস্তব-সময়ের (real-time) ভিত্তিতে র্যাঙ্কিং এবং ফিল্টারিং করতে সক্ষম করে, যা বিশেষভাবে business intelligence (BI) এবং data analytics এ গুরুত্বপূর্ণ।
এই প্রবন্ধে, আমরা Dynamic Ranking এবং Filtering Techniques এর মাধ্যমে কীভাবে ডেটার উপর র্যাঙ্কিং এবং ফিল্টারিং করা যায় তা আলোচনা করব। এছাড়াও আমরা কিছু গুরুত্বপূর্ণ DAX ফাংশন এবং তাদের ব্যবহার দেখাব, যেমন RANKX, FILTER, CALCULATE, ALL, এবং ALLSELECTED।
১. Dynamic Ranking in DAX
Dynamic Ranking হল একটি কৌশল যা ডেটাকে র্যাঙ্ক করে এবং এটি বিভিন্ন শর্ত বা সময়ের ভিত্তিতে পরিবর্তন করে। DAX-এ RANKX ফাংশনটি র্যাঙ্কিং করার জন্য ব্যবহৃত হয়। এটি আপনাকে একটি নির্দিষ্ট কলাম বা এক্সপ্রেশন অনুযায়ী ডেটাকে র্যাঙ্ক করতে সহায়ক।
RANKX ফাংশন
RANKX ফাংশনটি একটি টেবিলের ভিতরে র্যাঙ্কিং করার জন্য ব্যবহৃত হয়, এবং এটি সেই এক্সপ্রেশন বা কলামের উপর ভিত্তি করে র্যাঙ্ক প্রদান করে।
Syntax:
RANKX(<table>, <expression>, [<value>], [<order>], [<ties>])
- : সেই টেবিল বা কলামের নাম যা আপনি র্যাঙ্ক করতে চান।
- : যেকোনো এক্সপ্রেশন বা কলাম যার উপর র্যাঙ্কিং করা হবে।
- (ঐচ্ছিক): এক্সপ্রেশন বা কলাম যার উপর র্যাঙ্কিং করা হবে।
- : ASC (Ascending) বা DESC (Descending)।
- : Dense বা Skip। এটি যখন দুটি মান সমান হয়, তখন র্যাঙ্ক কিভাবে দেওয়া হবে তা নির্ধারণ করে।
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের মধ্যে বিক্রয়ের মোট পরিমাণের ভিত্তিতে পণ্যের র্যাঙ্ক নির্ধারণ করতে চান:
Product Rank = RANKX(
ALL(Sales[ProductID]),
SUM(Sales[Amount]),
,
DESC,
Dense
)
এখানে:
- ALL(Sales[ProductID]): এটি ProductID অনুযায়ী সমস্ত পণ্যকে বিবেচনায় নেবে, এবং SUM(Sales[Amount]) এর উপর ভিত্তি করে র্যাঙ্ক করবে।
- DESC: র্যাঙ্কিং Descending (বেশি বিক্রয় থেকে কম বিক্রয়) হবে।
- Dense: সমান বিক্রয়ের জন্য র্যাঙ্ক একে অপরের কাছাকাছি থাকবে।
২. Dynamic Filtering in DAX
Dynamic Filtering DAX-এ ব্যবহৃত একটি কৌশল যা ব্যবহারকারী নির্দিষ্ট শর্তের ভিত্তিতে ডেটা ফিল্টার করতে সহায়তা করে। CALCULATE, FILTER, এবং ALLSELECTED ফাংশনগুলি dynamic filtering এর জন্য খুবই গুরুত্বপূর্ণ। এগুলি বিভিন্ন শর্তে ডেটা ফিল্টার করে র্যাঙ্কিং এবং ক্যালকুলেশন করার জন্য উপকারী।
FILTER ফাংশন
FILTER ফাংশনটি একটি টেবিল বা কলামের উপর শর্ত প্রয়োগ করে, এবং শর্ত পূর্ণ করা সারিগুলি ফিরিয়ে দেয়। এটি সাধারণত CALCULATE ফাংশনের সাথে ব্যবহৃত হয়, যাতে ফলাফল ফিল্টার করা হয়।
Syntax:
FILTER(<table>, <condition>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিল থেকে শুধুমাত্র সেই বিক্রয় পরিমাণ দেখতে চান, যেগুলোর Amount 1000 এর বেশি:
High Sales = FILTER(Sales, Sales[Amount] > 1000)
এটি Sales টেবিল থেকে সেই রেকর্ডগুলিকে ফিরিয়ে দেবে, যেখানে Sales[Amount] 1000 এর বেশি।
CALCULATE ফাংশন এবং FILTER এর ব্যবহার
CALCULATE ফাংশনটি শর্ত পরিবর্তন করতে ব্যবহৃত হয় এবং এটি FILTER এর সাথে ব্যবহৃত হয়, যেখানে আপনি ডেটার ফিল্টারিং করতে পারেন।
Total High Sales = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Amount] > 1000))
এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধু সেই রেকর্ডগুলির জন্য যেখানে Amount 1000 এর বেশি।
৩. ALLSELECTED ফাংশন
ALLSELECTED ফাংশনটি একটি টেবিল বা কলামের সমস্ত নির্বাচিত (selected) মানের উপর ভিত্তি করে ফিল্টার প্রভাব নিয়ন্ত্রণ করে। এটি বিশেষভাবে visual slicers এর সাথে ব্যবহৃত হয় যেখানে ব্যবহারকারী ডেটার উপর ফিল্টার প্রয়োগ করতে পারেন এবং সেগুলির প্রভাব visuals-এ দেখানো হয়।
Syntax:
ALLSELECTED(<table_or_column>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের Region অনুযায়ী মোট বিক্রয় পরিমাণ বের করতে চান, তবে শুধুমাত্র নির্বাচিত Region গুলির উপর ভিত্তি করে:
Total Sales by Region = CALCULATE(SUM(Sales[Amount]), ALLSELECTED(Sales[Region]))
এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধুমাত্র নির্বাচিত Region অনুযায়ী।
৪. Cross Filtering Techniques
Cross filtering ব্যবহৃত হয় যখন দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করে তাদের মধ্যে ফিল্টার প্রভাব প্রয়োগ করতে হয়। DAX-এ CROSSFILTER ফাংশনটি ব্যবহৃত হয় যা সম্পর্কিত টেবিলগুলির মধ্যে filter direction নিয়ন্ত্রণ করতে সাহায্য করে।
Syntax:
CROSSFILTER(<column1>, <column2>, <filter_direction>)
- : প্রথম কলাম বা টেবিল।
- : দ্বিতীয় কলাম বা টেবিল।
- <filter_direction>: NONE, ONEWAY, অথবা BOTH।
ব্যবহার:
ধরা যাক, আপনি যদি চান যে Sales এবং Customers টেবিলের মধ্যে ফিল্টার প্রভাব bi-directionally প্রয়োগ হোক, তাহলে আপনি CROSSFILTER ব্যবহার করতে পারেন:
Total Sales with Customer Filter = CALCULATE(SUM(Sales[Amount]), CROSSFILTER(Customers[CustomerID], Sales[CustomerID], BOTH))
এটি Sales এবং Customers টেবিলের মধ্যে bi-directional filter প্রয়োগ করবে, যার ফলে উভয় টেবিলের ফিল্টার প্রভাব একে অপরের উপর প্রযোজ্য হবে।
৫. ALL ফাংশন এবং Dynamic Filtering
ALL ফাংশনটি ব্যবহার করে আপনি একটি কলাম বা টেবিল থেকে সমস্ত ফিল্টার সরিয়ে ফেলতে পারেন। এটি ডেটার বিশ্লেষণ করতে সহায়ক যখন আপনি চান যে filter context মুছে গিয়ে মোট ক্যালকুলেশন করা হোক।
Syntax:
ALL(<table_or_column>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান, তবে আপনি চান না যে Region বা অন্য কোনো ফিল্টার প্রভাবিত হোক:
Total Sales All = CALCULATE(SUM(Sales[Amount]), ALL(Sales[Region]))
এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, কিন্তু Region কলামের ফিল্টার প্রভাব থাকবে না।
সারাংশ
Dynamic Ranking এবং Filtering Techniques DAX-এ অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী কৌশল, যা ডেটার উপর দ্রুত এবং কার্যকরী বিশ্লেষণ তৈরি করতে সহায়ক। RANKX, FILTER, CALCULATE, ALLSELECTED, এবং ALL ফাংশনগুলি dynamic filtering এবং dynamic ranking তৈরি করতে ব্যবহৃত হয়, যা Power BI এবং Excel-এ কাস্টম রিপোর্টিং এবং ডেটা বিশ্লেষণ করতে সহায়ক। Cross Filtering এবং CROSSFILTER ফাংশনগুলি সম্পর্কিত টেবিলগুলির মধ্যে filter context নিয়ন্ত্রণ করতে সহায়ক, যা ডেটার বিশ্লেষণ আরও শক্তিশালী করে তোলে।
Read more