DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। এটি মূলত data modeling এবং complex calculations তৈরি করতে ব্যবহৃত হয়, যেখানে ডেটার সম্পর্ক এবং বিশ্লেষণযোগ্য ডেটা মডেল তৈরি করতে হয়। ড্যাক্সের সাহায্যে আপনি calculated columns, measures, এবং tables তৈরি করতে পারেন, এবং business logic এবং complex calculations বাস্তবায়ন করতে পারেন।
এই প্রবন্ধে আমরা DAX-এর বিভিন্ন ফাংশন এবং পদ্ধতিগুলি নিয়ে আলোচনা করব যা Data Modeling এবং Complex Calculations এর জন্য ব্যবহৃত হয়।
১. Data Modeling in DAX
Data modeling হল ডেটার উপস্থাপনা এবং সম্পর্কিত ডেটার মধ্যে কাস্টম সম্পর্ক তৈরির প্রক্রিয়া। DAX ব্যবহার করে আপনি calculated columns, measures, এবং relationships তৈরি করতে পারেন যা ডেটার গভীর বিশ্লেষণ করতে সহায়ক।
Calculated Columns
Calculated columns হল কলাম যেগুলি ডেটা মডেলে row-by-row ভিত্তিতে হিসাব করা হয়। এগুলি মূলত ডেটার জন্য কাস্টম মান তৈরি করতে ব্যবহৃত হয়।
Syntax:
<NewColumnName> = <Expression>
উদাহরণ:
ধরা যাক, Sales টেবিলে আপনি SalesAmount এবং Discount কলামের উপর ভিত্তি করে একটি নতুন FinalPrice কলাম তৈরি করতে চান:
FinalPrice = Sales[SalesAmount] - Sales[Discount]
এই ফর্মুলাটি Sales টেবিলের প্রতি সারির জন্য FinalPrice কলামের মান হিসাব করবে, যা SalesAmount এবং Discount এর পার্থক্য।
Relationship Creation
DAX ব্যবহার করে আপনি relationships তৈরি করতে পারেন, যা টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করে। Relationships ডেটার সঠিক বিশ্লেষণ এবং aggregation নিশ্চিত করতে সহায়ক।
Relationships Types:
- One-to-Many: একটি টেবিলের একটি রেকর্ডের সাথে অন্য টেবিলের একাধিক রেকর্ড সম্পর্কিত।
- Many-to-Many: দুটি টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত।
- One-to-One: দুটি টেবিলের একেকটি রেকর্ড একে অপরের সাথে সম্পর্কিত।
User Relationships in DAX:
USERELATIONSHIP(Sales[OrderDate], Calendar[Date])
এটি Sales এবং Calendar টেবিলের মধ্যে একটি নতুন সম্পর্ক তৈরি করবে, যেখানে OrderDate এবং Date কলামগুলো সম্পর্কিত।
২. Complex Calculations in DAX
DAX-এর সাহায্যে আপনি complex calculations তৈরি করতে পারেন, যেমন conditional aggregations, time intelligence, ranking, এবং cumulative calculations। কিছু গুরুত্বপূর্ণ ফাংশনগুলি যা complex calculations করতে ব্যবহৃত হয়:
CALCULATE ফাংশন
CALCULATE ফাংশনটি একটি ক্যালকুলেশন বা এক্সপ্রেশন প্রক্রিয়া করার জন্য ব্যবহৃত হয়, যেখানে নির্দিষ্ট filter context প্রয়োগ করা হয়।
Syntax:
CALCULATE(<expression>, <filter1>, <filter2>, ...)
ব্যবহার:
যেমন, আপনি যদি Sales টেবিলের জন্য Amount এর মোট যোগফল বের করতে চান এবং তার উপর Region = "East" শর্ত প্রয়োগ করতে চান:
Total Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")
এটি Sales[Amount] এর যোগফল বের করবে, কিন্তু শুধুমাত্র যখন Sales[Region] = "East" হবে।
FILTER ফাংশন
FILTER ফাংশনটি একটি টেবিল বা কলামের উপর শর্ত প্রয়োগ করে এবং শুধুমাত্র সেই সারিগুলি ফিরিয়ে দেয়, যা শর্ত পূর্ণ করে।
Syntax:
FILTER(<table>, <condition>)
ব্যবহার:
যেমন, আপনি Sales টেবিল থেকে এমন বিক্রয় পরিমাণ বের করতে চান যেখানে Amount 1000 এর বেশি:
High Sales = FILTER(Sales, Sales[Amount] > 1000)
এটি Sales টেবিলের শুধু সেই সারিগুলির তথ্য ফিরিয়ে দেবে, যেখানে Amount > 1000।
TIME INTELLIGENCE Functions
DAX-এ Time Intelligence ফাংশনগুলি ব্যবহার করে আপনি ডেটার উপর সময় ভিত্তিক বিশ্লেষণ করতে পারেন। কিছু সাধারণ Time Intelligence ফাংশন হল:
- TOTALYTD: Year-to-Date (YTD) পরিমাণ বের করার জন্য।
- SAMEPERIODLASTYEAR: গত বছরের একই সময়ের ডেটা তুলনা করার জন্য।
- DATEADD: একটি তারিখে নির্দিষ্ট সময় যোগ বা বিয়োগ করতে ব্যবহৃত হয়।
- PARALLELPERIOD: একটি নির্দিষ্ট সময় পিরিয়ডের তুলনা করতে ব্যবহৃত হয় (যেমন, 1 মাস, 1 বছর আগে)।
উদাহরণ:
YTD Sales = TOTALYTD(SUM(Sales[Amount]), Sales[Date])
এটি Sales[Amount] এর Year-to-Date মোট বিক্রয় পরিমাণ বের করবে।
৩. Optimizing DAX for Complex Calculations
DAX কোডের পারফরম্যান্স উন্নত করার জন্য কিছু সেরা প্র্যাকটিস অনুসরণ করা প্রয়োজন। Complex calculations করার সময় আপনি যদি সঠিক ভাবে পারফরম্যান্স অপটিমাইজ না করেন, তাহলে এটি ধীরগতির হতে পারে। কিছু সাধারণ performance optimization টিপস হল:
১. Avoid using complex row context expressions in measures
যতটা সম্ভব row context ব্যতীত column context ব্যবহার করা উচিত, কারণ row context অনেক বেশি প্রসেসিং শক্তি গ্রহণ করতে পারে।
২. Minimize the use of calculated columns
Calculated columns অনেক সময় সময়সাপেক্ষ হতে পারে, তাই শুধুমাত্র প্রয়োজনীয় সময়েই এগুলি ব্যবহার করা উচিত। সম্ভব হলে measures ব্যবহার করা উচিৎ।
৩. Use variables in complex calculations
যখন আপনি complex calculations করছেন, variables ব্যবহার করা একটি ভাল অভ্যাস। এতে আপনার কোডের পারফরম্যান্স এবং পাঠযোগ্যতা বাড়বে।
Sales Growth =
VAR PreviousSales = CALCULATE(SUM(Sales[Amount]), PREVIOUSYEAR(Sales[Date]))
VAR CurrentSales = SUM(Sales[Amount])
RETURN (CurrentSales - PreviousSales) / PreviousSales
৪. Minimize filter context impact
FILTER ফাংশন ব্যবহার করার সময়, চেষ্টা করুন কম filter context প্রভাবিত করার জন্য। আপনি যদি কম filters প্রয়োগ করতে পারেন, তবে পারফরম্যান্স উন্নত হবে।
সারাংশ
DAX ডেটা মডেলিং এবং complex calculations এর জন্য একটি অত্যন্ত শক্তিশালী টুল। আপনি calculated columns, measures, এবং relationships ব্যবহার করে ডেটাকে বিশ্লেষণ করতে পারেন, এবং complex calculations যেমন conditional aggregations, time intelligence, এবং ranking তৈরি করতে পারেন। পারফরম্যান্স অপটিমাইজেশন টিপস অনুসরণ করে আপনি আপনার DAX ক্যালকুলেশনগুলির কার্যকারিতা বাড়াতে পারেন, যা ডেটা বিশ্লেষণের গতি ও নির্ভুলতা নিশ্চিত করে।
Read more