DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। USERELATIONSHIP ফাংশনটি DAX-এর একটি গুরুত্বপূর্ণ ফাংশন যা inactive relationships সক্রিয় (activate) করার জন্য ব্যবহৃত হয়, বিশেষত যখন দুটি টেবিলের মধ্যে একাধিক সম্পর্ক থাকে।
USERELATIONSHIP ফাংশনটি inactive relationships নিয়ে কাজ করতে সক্ষম। Inactive relationships হল সেই সম্পর্ক যা Power BI বা SSAS-এ স্বাভাবিকভাবে সক্রিয় নয়, তবে আপনি বিশেষ প্রয়োজনের জন্য সেটি ব্যবহার করতে চান।
১. USERELATIONSHIP ফাংশন কী?
USERELATIONSHIP ফাংশনটি দুটি টেবিলের মধ্যে এমন একটি সম্পর্ক সক্রিয় করতে ব্যবহৃত হয় যা সাধারণত inactive থাকে। এটি CALCULATE ফাংশনের সাথে ব্যবহৃত হয়, যার মাধ্যমে আপনি inactive relationship ব্যবহার করে filter context পরিবর্তন করতে পারেন।
Syntax:
USERELATIONSHIP(<column1>, <column2>)
- : প্রথম টেবিলের সম্পর্কিত কলাম।
- : দ্বিতীয় টেবিলের সম্পর্কিত কলাম।
২. USERELATIONSHIP ফাংশনের ব্যবহার
Multiple Relationships Example
ধরা যাক, আপনার কাছে দুটি টেবিল রয়েছে—Sales এবং Date টেবিল। এই টেবিলগুলির মধ্যে দুটি সম্পর্ক রয়েছে: একটি OrderDate এবং অন্যটি ShipDate। সাধারণত, Power BI বা SSAS-এ একটি active relationship থাকে, যেমন OrderDate। তবে আপনি ShipDate এর জন্য inactive relationship ব্যবহার করতে চান। এই ক্ষেত্রে USERELATIONSHIP ফাংশনটি কার্যকরী হবে।
Example: Using USERELATIONSHIP to Activate Inactive Relationship
ধরা যাক, আপনি Sales টেবিলের Amount এর যোগফল বের করতে চান যেখানে ShipDate ব্যবহৃত হচ্ছে:
Total Sales by Ship Date = CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[ShipDate], Date[Date]))
এখানে:
- USERELATIONSHIP ফাংশনটি Sales[ShipDate] এবং Date[Date] এর মধ্যে inactive relationship সক্রিয় করবে।
- CALCULATE ফাংশনটি Sales[Amount] এর মোট যোগফল বের করবে, কিন্তু ShipDate কলামের মাধ্যমে।
এই ফাংশনটি ব্যবহার করে আপনি inactive relationship-কে active relationship হিসাবে ব্যবহার করতে পারবেন এবং Sales টেবিলের ShipDate কলামকে ভিত্তি করে কাস্টম ক্যালকুলেশন করতে পারবেন।
৩. USERELATIONSHIP ফাংশন এবং CALCULATE ফাংশনের কম্বিনেশন
USERELATIONSHIP ফাংশনটি সাধারণত CALCULATE ফাংশনের সাথে ব্যবহৃত হয়, যেহেতু CALCULATE ফাংশনটি filter context পরিবর্তন করতে এবং inactive relationships সক্রিয় করতে সাহায্য করে।
Example: Calculating Total Sales with Multiple Relationships
ধরা যাক, আপনি চান যে Sales টেবিলের Amount এর মোট যোগফল বের করতে হবে, তবে আপনি OrderDate এবং ShipDate দুটোই ব্যবহার করতে চান:
Total Sales =
CALCULATE(
SUM(Sales[Amount]),
USERELATIONSHIP(Sales[OrderDate], Date[Date]),
USERELATIONSHIP(Sales[ShipDate], Date[Date])
)
এখানে:
- USERELATIONSHIP(Sales[OrderDate], Date[Date]) এবং USERELATIONSHIP(Sales[ShipDate], Date[Date]) ফাংশন দুটি OrderDate এবং ShipDate এর সম্পর্কগুলো সক্রিয় করবে।
- CALCULATE ফাংশনটি একযোগে দুটি USERELATIONSHIP ব্যবহার করে Sales[Amount] এর মোট যোগফল বের করবে।
৪. USERELATIONSHIP এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- Multiple Relationships: USERELATIONSHIP ফাংশনটি multiple relationships নিয়ে কাজ করতে পারে, যা ডেটা বিশ্লেষণ আরও শক্তিশালী এবং নমনীয় করে।
- Inactive Relationships: যখন আপনি একাধিক সম্পর্ক ব্যবহার করতে চান এবং কিছু সম্পর্ক সক্রিয় না থাকে, তখন USERELATIONSHIP তা সক্রিয় করতে সাহায্য করে।
- Time Intelligence: সময় ভিত্তিক বিশ্লেষণ করতে, যেমন Year-to-Date, Month-to-Date ইত্যাদি, inactive relationships ব্যবহার করে আপনি আরো সঠিক বিশ্লেষণ করতে পারেন।
সীমাবদ্ধতা:
- Performance: USERELATIONSHIP ফাংশনটি ব্যবহারের ফলে কিছু ক্ষেত্রে performance সমস্যা হতে পারে, বিশেষত যখন বড় ডেটাসেট বা জটিল ক্যালকুলেশন থাকে।
- Single Active Relationship: USERELATIONSHIP শুধুমাত্র একটি active relationship পরিচালনা করতে পারে, তাই যদি একাধিক সম্পর্ক সক্রিয় করার চেষ্টা করা হয়, তখন এটি কাজ নাও করতে পারে।
৫. USERELATIONSHIP এর বাস্তব উদাহরণ
ধরা যাক, আপনি Sales টেবিলের Amount ক্যালকুলেট করতে চান, তবে আপনি Sales[OrderDate] এবং Sales[ShipDate]-এর ওপর ভিত্তি করে দুটি ভিন্ন ক্যালকুলেশন করতে চান। এখানে USERELATIONSHIP ফাংশনটি ব্যবহার করা হবে:
Total Sales by Order Date =
CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[OrderDate], Date[Date]))
Total Sales by Ship Date =
CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[ShipDate], Date[Date]))
এখানে:
- প্রথম ক্যালকুলেশনটি OrderDate ব্যবহার করে মোট বিক্রয় পরিমাণ বের করবে।
- দ্বিতীয় ক্যালকুলেশনটি ShipDate ব্যবহার করে মোট বিক্রয় পরিমাণ বের করবে।
এভাবে আপনি দুটি ভিন্ন টাইম পিরিয়ডের বিশ্লেষণ করতে পারেন, যেখানে একটি active relationship এবং একটি inactive relationship সক্রিয় করা হয়েছে।
সারাংশ
USERELATIONSHIP ফাংশনটি DAX-এ একটি অত্যন্ত শক্তিশালী টুল যা inactive relationships সক্রিয় করার জন্য ব্যবহৃত হয়। এটি বিশেষত multiple relationships এর ক্ষেত্রে গুরুত্বপূর্ণ, যেখানে আপনি দুটি বা তার বেশি টেবিলের মধ্যে সম্পর্ক তৈরি এবং ব্যবহার করতে চান। USERELATIONSHIP ফাংশনটি সাধারণত CALCULATE ফাংশনের সাথে ব্যবহৃত হয় এবং filter context নিয়ন্ত্রণ করতে সহায়ক। এটি time intelligence এবং complex calculations এ বিশেষভাবে কার্যকরী।
Read more