DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। Multiple Tables এর মধ্যে সম্পর্ক স্থাপন এবং ডেটা বিশ্লেষণ করার জন্য DAX বেশ কিছু শক্তিশালী ফাংশন প্রদান করে, যেমন LOOKUPVALUE এবং TREATAS।
এই প্রবন্ধে, আমরা LOOKUPVALUE এবং TREATAS ফাংশনগুলির কার্যকারিতা, সঠিক ব্যবহার এবং বাস্তব দুনিয়ার প্রয়োগ নিয়ে আলোচনা করব।
১. LOOKUPVALUE ফাংশন
LOOKUPVALUE ফাংশনটি ব্যবহার করা হয় যখন আপনি একটি টেবিলের মধ্যে একটি নির্দিষ্ট মান খুঁজে বের করতে চান, যা অন্য একটি টেবিলের সাথে সম্পর্কিত। এটি মূলত key-value pair এর মতো কাজ করে, যেখানে আপনি একটি নির্দিষ্ট কলামের মানের জন্য সম্পর্কিত মান বের করতে পারেন।
Syntax:
LOOKUPVALUE(<result_column>, <search_column1>, <search_value1>, <search_column2>, <search_value2>, ...)
- <result_column>: যে কলাম থেকে আপনি মান ফিরিয়ে আনতে চান।
- <search_column1>: যে কলামে খোঁজ করা হবে।
- <search_value1>: যেটি খোঁজা হচ্ছে।
- আপনি একাধিক search_column এবং search_value যুক্ত করতে পারেন, যা filter হিসেবে কাজ করবে।
ব্যবহার:
ধরা যাক, আপনার দুটি টেবিল আছে: Sales এবং Products। আপনি Sales টেবিল থেকে ProductID ব্যবহার করে Products টেবিলের ProductName বের করতে চান।
Product Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], Sales[ProductID])
এখানে:
- LOOKUPVALUE ফাংশনটি Sales টেবিলের ProductID কলামের মানের ভিত্তিতে Products টেবিলের ProductName কলামের মান ফেরত দেবে।
Real-World Use Case:
ধরা যাক, আপনি Sales টেবিল থেকে EmployeeID ব্যবহার করে Employee টেবিলের EmployeeName বের করতে চান। এর জন্যও আপনি LOOKUPVALUE ফাংশন ব্যবহার করতে পারেন।
২. TREATAS ফাংশন
TREATAS ফাংশনটি ব্যবহার করা হয় একটি এক্সপ্রেশন বা টেবিলের মানকে অন্য একটি কলাম বা টেবিলের মান হিসেবে আচরণ করতে। এটি একধরনের virtual relationship তৈরি করে, যেখানে একটি কলামের মান অন্য কলামের সাথে filter context তৈরি করে, কিন্তু বাস্তবে কোনো সম্পর্ক স্থাপন করা হয় না।
Syntax:
TREATAS(<table>, <column1>, <column2>, ...)
- : এটি সেই এক্সপ্রেশন বা টেবিল যার মান আপনি ব্যবহার করতে চান।
- , : টেবিলের কলামগুলির মান যেগুলি TREATAS ফাংশন দ্বারা সম্পর্কিত হবে।
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের Region কলামের মান Products টেবিলের ProductCategory কলামের মান হিসেবে ব্যবহার করতে চান। তাহলে আপনি TREATAS ফাংশনটি ব্যবহার করবেন:
Total Sales by Category = CALCULATE(SUM(Sales[Amount]), TREATAS(Products[ProductCategory], Sales[Region]))
এখানে:
- TREATAS ফাংশনটি Products[ProductCategory] কলামের মানকে Sales[Region] কলামের মান হিসেবে আচরণ করবে, এবং Sales[Amount] এর যোগফল বের করবে।
Real-World Use Case:
ধরা যাক, আপনি Customer টেবিলের CustomerGroup কলামের মানকে Sales টেবিলের Region কলামের মান হিসেবে ব্যবহার করতে চান, যাতে আপনি Sales এবং Customer টেবিলের মধ্যে একটি সম্পর্ক তৈরি করতে পারেন এবং বিক্রয়ের পরিমাণ বের করতে পারেন।
Sales by Customer Group = CALCULATE(SUM(Sales[Amount]), TREATAS(Customer[CustomerGroup], Sales[Region]))
৩. LOOKUPVALUE এবং TREATAS এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | LOOKUPVALUE | TREATAS |
|---|---|---|
| সংজ্ঞা | একটি কলামের মান অন্য একটি কলামের মানের ভিত্তিতে খুঁজে পাওয়া। | একটি এক্সপ্রেশন বা টেবিলের মানকে অন্য কলামের মান হিসেবে আচরণ করানো। |
| ব্যবহার | যখন একটি টেবিলের একটি কলাম থেকে সম্পর্কিত মান বের করতে হয়। | যখন একটি ভার্চুয়াল সম্পর্ক তৈরি করতে হয়। |
| Relationship Type | বাস্তব সম্পর্ক। | ভার্চুয়াল সম্পর্ক। |
| Use Cases | সাধারণত one-to-one বা one-to-many সম্পর্কের জন্য। | many-to-many সম্পর্ক তৈরি করার জন্য। |
| Example | LOOKUPVALUE(Products[ProductName], Products[ProductID], Sales[ProductID]) | TREATAS(Products[ProductCategory], Sales[Region]) |
৪. Performance Considerations
LOOKUPVALUE এবং TREATAS ফাংশনগুলি যখন একসাথে ব্যবহৃত হয়, তখন পারফরম্যান্সের উপর প্রভাব ফেলতে পারে, বিশেষ করে যখন ডেটাসেট বড় হয়। কিছু পারফরম্যান্স টিপস:
- Efficient Data Models: বড় ডেটাসেটে LOOKUPVALUE ব্যবহার করার আগে model relationships এবং indexing নিশ্চিত করুন। অপ্রয়োজনীয় সম্পর্ক এড়িয়ে চলুন।
- Use Variables: TREATAS বা LOOKUPVALUE ব্যবহার করার সময়, এক্সপ্রেশনগুলি পরিবর্তন করতে variables ব্যবহার করতে পারেন, যা কোডকে আরও অপটিমাইজ করবে এবং পুনরাবৃত্তি গণনা এড়ানো যাবে।
- Filter Context: TREATAS ফাংশনের মাধ্যমে filter context তৈরি করার সময়, অতিরিক্ত ফিল্টার এড়ানো উচিত, যা পারফরম্যান্স কমাতে পারে।
সারাংশ
LOOKUPVALUE এবং TREATAS হল DAX-এর শক্তিশালী ফাংশন, যা multiple tables এর মধ্যে সম্পর্ক স্থাপন এবং ডেটা বিশ্লেষণ করার জন্য ব্যবহৃত হয়। LOOKUPVALUE ব্যবহার করে আপনি একটি কলাম থেকে অন্য কলামের সম্পর্কিত মান খুঁজে বের করতে পারেন, যখন TREATAS ব্যবহার করে আপনি ভার্চুয়াল সম্পর্ক তৈরি করতে পারেন যা many-to-many সম্পর্কের জন্য অত্যন্ত কার্যকর। সঠিকভাবে এই ফাংশনগুলি ব্যবহার করে আপনি আপনার ডেটা মডেলকে আরও শক্তিশালী এবং কার্যকরী করতে পারেন, এবং সঠিক filter context ও relationship তৈরির মাধ্যমে দ্রুত ফলাফল পেতে পারেন।
Read more