DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। DAX Queries এবং Data Analysis-এ DAX ব্যবহারের মাধ্যমে আপনি জটিল ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং মেট্রিক্স তৈরি করতে পারেন। DAX-এ queries ব্যবহার করে আপনি সহজেই ডেটা মডেল থেকে তথ্য বিশ্লেষণ করতে পারেন এবং কাস্টম রিপোর্ট এবং মেট্রিক্স তৈরি করতে পারেন।
এই প্রবন্ধে, আমরা DAX Queries এবং Data Analysis এর উপর আলোচনা করব এবং দেখব কিভাবে DAX ব্যবহার করে কার্যকরী ডেটা বিশ্লেষণ করা যায়।
১. DAX Queries এর মাধ্যমে Data Analysis
DAX Queries ব্যবহারের মাধ্যমে আপনি Power BI, PowerPivot, বা SSAS-এ data models থেকে সহজেই তথ্য টেনে আনতে পারেন। DAX-এ queries সাধারণত FILTER, SELECT, CALCULATE, এবং অন্যান্য ফাংশন ব্যবহার করে তৈরি করা হয়। এই ফাংশনগুলির মাধ্যমে আপনি কাস্টম ক্যালকুলেশন, অ্যাগ্রিগেশন এবং বিশ্লেষণ করতে পারেন।
Syntax of DAX Queries:
EVALUATE <Table or Expression>
EVALUATE কিওয়ার্ডটি DAX Query-এর প্রধান অংশ, যা একটি টেবিল বা এক্সপ্রেশন থেকে ডেটা ফিরিয়ে দেয়।
Example of a Simple DAX Query:
ধরা যাক, আপনি Sales টেবিল থেকে Product এবং SalesAmount নির্বাচন করতে চান:
EVALUATE
Sales
এটি Sales টেবিলের সমস্ত ডেটা ফেরত দিবে।
২. DAX Query-তে Filtering
FILTER ফাংশনটি DAX Query-তে rows বা data ফিল্টার করতে ব্যবহৃত হয়। এটি খুবই উপকারী যখন আপনি একটি টেবিল বা এক্সপ্রেশন থেকে নির্দিষ্ট শর্ত অনুযায়ী ডেটা চান।
Syntax of FILTER:
EVALUATE
FILTER(<Table>, <Condition>)
Example of Filtering in DAX Query:
ধরা যাক, আপনি Sales টেবিল থেকে SalesAmount 1000 এর বেশি এমন Product এবং SalesAmount নির্বাচন করতে চান:
EVALUATE
FILTER(Sales, Sales[SalesAmount] > 1000)
এটি Sales টেবিলের শুধুমাত্র সেই সারিগুলিকে ফিরিয়ে দেবে যেখানে SalesAmount 1000 এর বেশি।
৩. DAX Query-তে Calculated Columns এবং Measures
Calculated Columns এবং Measures DAX Query-তে ব্যবহার করা যেতে পারে, যাতে আপনি আরও উন্নত বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন করতে পারেন।
Example of a Calculated Column in a DAX Query:
ধরা যাক, আপনি Sales টেবিলের মধ্যে Profit (যা SalesAmount - Cost) বের করতে চান:
EVALUATE
ADDCOLUMNS(
Sales,
"Profit", Sales[SalesAmount] - Sales[Cost]
)
এখানে, ADDCOLUMNS ফাংশনটি Sales টেবিলের প্রতিটি সারির জন্য Profit কলাম যোগ করবে, যা SalesAmount - Cost এর পার্থক্য হবে।
Example of a Measure in a DAX Query:
আপনি যদি Sales টেবিল থেকে Total Sales বের করতে চান, তবে SUM ফাংশন ব্যবহার করতে পারেন:
EVALUATE
SUMMARIZE(
Sales,
Sales[Product],
"Total Sales", SUM(Sales[SalesAmount])
)
এখানে, SUMMARIZE ফাংশনটি Sales[Product] অনুযায়ী Total Sales বের করবে।
৪. DAX Query-তে Sorting
ORDER BY কিওয়ার্ড ব্যবহার করে আপনি DAX Query-তে ডেটাকে ascending বা descending অর্ডারে সাজাতে পারেন।
Syntax of ORDER BY:
EVALUATE
<Table or Expression>
ORDER BY
<Column> [ASC|DESC]
Example of Sorting in a DAX Query:
ধরা যাক, আপনি Sales টেবিলের SalesAmount অনুযায়ী descending order এ সাজাতে চান:
EVALUATE
Sales
ORDER BY
Sales[SalesAmount] DESC
এটি Sales টেবিলের ডেটাকে SalesAmount এর descending order অনুযায়ী সাজিয়ে দেখাবে।
৫. DAX Query-তে Aggregation Functions
Aggregation Functions যেমন SUM, AVERAGE, COUNT, MIN, MAX ইত্যাদি ব্যবহার করে আপনি ডেটার উপর বিভিন্ন ধরনের গাণিতিক ক্যালকুলেশন করতে পারেন।
Example of SUM Aggregation in a DAX Query:
ধরা যাক, আপনি Sales টেবিলের SalesAmount এর মোট যোগফল বের করতে চান:
EVALUATE
SUMMARIZE(
Sales,
Sales[Product],
"Total Sales", SUM(Sales[SalesAmount])
)
এটি Sales[Product] অনুযায়ী SalesAmount এর যোগফল বের করবে এবং একটি নতুন Total Sales কলাম তৈরি করবে।
৬. DAX Query-তে Time Intelligence
Time Intelligence ফাংশনগুলি Date Table বা Time Dimension ব্যবহার করে সময়ভিত্তিক বিশ্লেষণ করতে ব্যবহৃত হয়। DAX queries এ সময়ভিত্তিক বিশ্লেষণ করার জন্য আপনি SAMEPERIODLASTYEAR, TOTALYTD, PREVIOUSMONTH, এবং অন্যান্য সময়-সম্পর্কিত ফাংশন ব্যবহার করতে পারেন।
Example of YTD Calculation in a DAX Query:
ধরা যাক, আপনি Sales টেবিল থেকে Year-to-Date (YTD) বিক্রয় পরিমাণ বের করতে চান:
EVALUATE
CALCULATETABLE(
Sales,
TOTALYTD(SUM(Sales[SalesAmount]), Sales[Date])
)
এটি Sales টেবিল থেকে SalesAmount এর Year-to-Date মোট পরিমাণ বের করবে।
৭. DAX Query-তে Filters এবং Context
DAX Query-তে filters ব্যবহার করা খুবই গুরুত্বপূর্ণ, কারণ এটি ডেটাকে প্রয়োজন অনুযায়ী সিলেক্ট করতে সহায়ক। আপনি FILTER, ALL, এবং ALLSELECTED ফাংশন ব্যবহার করে কাস্টম ফিল্টার প্রয়োগ করতে পারেন।
Example of Filter in a DAX Query:
ধরা যাক, আপনি Sales টেবিল থেকে Region "East" এবং Product "A"-এর বিক্রয় পরিমাণ বের করতে চান:
EVALUATE
CALCULATETABLE(
Sales,
Sales[Region] = "East",
Sales[Product] = "A"
)
এটি Sales টেবিলের মধ্যে শুধুমাত্র Region "East" এবং Product "A"-এর জন্য ডেটা ফিরিয়ে দেবে।
সারাংশ
DAX Queries ব্যবহার করে আপনি Power BI, PowerPivot, এবং SSAS-এ কাস্টম ক্যালকুলেশন এবং ডেটা বিশ্লেষণ করতে পারেন। EVALUATE কিওয়ার্ড ব্যবহার করে আপনি ডেটা টেবিল থেকে তথ্য টেনে আনতে পারেন এবং CALCULATE, FILTER, SUM, AVERAGE, COUNT, TIME INTELLIGENCE ফাংশনগুলির মাধ্যমে ডেটাকে বিশ্লেষণ করতে পারেন। DAX Queries আপনাকে ডেটা মডেলের মধ্যে গভীর বিশ্লেষণ এবং কাস্টম রিপোর্ট তৈরি করতে সহায়ক হয়, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণ এবং data-driven insights পেতে সহায়তা করে।
DAX (Data Analysis Expressions) হল একটি এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। DAX Queries হল সেই বিশেষ কোড যা ব্যবহার করে আপনি Power BI বা SSAS-এ ডেটা মডেলের মধ্যে কাস্টম ক্যালকুলেশন, ফিল্টারিং, এবং aggregation করতে পারেন।
এই প্রবন্ধে, আমরা DAX Queries কী, তা কীভাবে কাজ করে, এবং DAX Query ব্যবহারের বিভিন্ন প্রেক্ষাপট নিয়ে আলোচনা করব।
১. DAX Queries কী?
DAX Queries হল সেই কোড বা এক্সপ্রেশন যা DAX ভাষায় লেখা হয় এবং Power BI বা SSAS ডেটা মডেলে data retrieval (ডেটা পুনরুদ্ধার) এবং calculation (গণনা) করতে ব্যবহৃত হয়। DAX Queries সাধারণত Power BI এর Data View, Query Editor, অথবা DirectQuery মোডে ব্যবহৃত হয়, এবং এগুলি ব্যবহার করে আপনি ডেটাকে filter, summarize, aggregate, বা group করতে পারেন।
DAX Query এর প্রধান উপাদানগুলি:
- Data Retrieval: ডেটা মডেল থেকে ডেটা উদ্ধার করা।
- Filtering: ডেটার উপরে শর্ত বা ফিল্টার প্রয়োগ করা।
- Aggregation: ডেটার উপর sum, average, count ইত্যাদি ফাংশন প্রয়োগ করা।
- Grouping: ডেটাকে নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করা।
- Time Intelligence: YTD, QTD, MTD ইত্যাদি ব্যবহার করে সময় ভিত্তিক বিশ্লেষণ করা।
২. DAX Query কিভাবে কাজ করে?
DAX Queries এর কার্যপ্রণালী Data Model এর উপর ভিত্তি করে কাজ করে। এটি মূলত filter context এবং row context এর মধ্যে একটি ভারসাম্য রক্ষা করে এবং ফিল্টার প্রয়োগের মাধ্যমে ডেটাকে কাস্টমাইজ করে।
DAX Query Execution Process:
- Query Request: প্রথমে একটি DAX query তৈরি করা হয়, যা ডেটা মডেল থেকে নির্দিষ্ট ডেটা বা পরিসংখ্যান উদ্ধার করতে নির্দেশ দেয়।
- Context Evaluation: যখন DAX query রান হয়, তখন filter context এবং row context এর প্রভাব পড়ে। এর মাধ্যমে ডেটার প্রয়োজনীয় অংশ নির্বাচন করা হয়।
- Data Calculation: DAX query অনুযায়ী ডেটা ক্যালকুলেশন সম্পন্ন করা হয়, যেমন sum, average, count, ইত্যাদি।
- Return the Result: ক্যালকুলেশন সম্পন্ন হওয়ার পরে, ডেটা বা ফলাফল ব্যবহারকারীর কাছে ফিরে আসে।
৩. DAX Query এর ব্যবহার
DAX Query এর ব্যবহার মূলত Power BI, SSAS, এবং Excel-এ ডেটা মডেলিং এবং কাস্টম ক্যালকুলেশন তৈরি করতে হয়। এখানে কিছু সাধারণ DAX query এর ব্যবহারিক উদাহরণ দেওয়া হলো।
1. Basic Aggregation Query:
ধরা যাক, আপনি Sales টেবিল থেকে Amount এর মোট যোগফল বের করতে চান, তাহলে SUM ফাংশন ব্যবহার করে আপনি একটি DAX Query তৈরি করতে পারেন:
EVALUATE
SUMMARIZE(
Sales,
Sales[ProductID],
"Total Sales", SUM(Sales[Amount])
)
এই queryটি Sales টেবিলের ProductID অনুসারে Amount এর মোট যোগফল বের করবে এবং প্রতিটি পণ্যের জন্য একটি সারি ফিরিয়ে দেবে।
2. Filtering Data with DAX Query:
যদি আপনি Sales টেবিল থেকে শুধু সেই রেকর্ডগুলো দেখতে চান যেখানে Amount 1000 এর বেশি, তবে আপনি FILTER ফাংশন ব্যবহার করতে পারেন:
EVALUATE
FILTER(
Sales,
Sales[Amount] > 1000
)
এই queryটি শুধুমাত্র সেই রেকর্ডগুলি ফিরিয়ে দেবে যেখানে Sales[Amount] 1000 এর বেশি।
3. Time-Based Calculation Query (YTD Example):
Time Intelligence ক্যালকুলেশনের জন্য একটি উদাহরণ হল Year-To-Date (YTD) ক্যালকুলেশন, যা একটি Sales টেবিলের জন্য তৈরি করা যেতে পারে:
EVALUATE
CALCULATE(
SUM(Sales[Amount]),
DATESYTD(Sales[Date])
)
এটি Sales টেবিলের Amount এর YTD যোগফল বের করবে, যেখানে Sales[Date] কলামটি তারিখের তথ্য ধারণ করে।
4. Grouping Data Using DAX Query:
এখন, আপনি যদি Sales টেবিলের ProductID এবং Region অনুযায়ী বিক্রয়ের মোট যোগফল দেখতে চান, তবে SUMMARIZE ফাংশন ব্যবহার করতে পারেন:
EVALUATE
SUMMARIZE(
Sales,
Sales[ProductID],
Sales[Region],
"Total Sales", SUM(Sales[Amount])
)
এই queryটি Sales টেবিলের ProductID এবং Region অনুযায়ী Amount এর মোট যোগফল বের করবে এবং গ্রুপ অনুযায়ী ফলাফল প্রদান করবে।
৪. DAX Query এবং SQL Query এর মধ্যে পার্থক্য
DAX Query এবং SQL Query উভয়ই ডেটা বিশ্লেষণ এবং ক্যালকুলেশন করতে ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মূল পার্থক্য রয়েছে:
| DAX Query | SQL Query |
|---|---|
| DAX ডেটা মডেলিং এবং কাস্টম ক্যালকুলেশনের জন্য ব্যবহৃত হয়। | SQL ডেটাবেস থেকে ডেটা রিট্রিভ এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। |
| DAX সাধারণত Power BI, Excel, এবং SSAS এর মধ্যে ব্যবহৃত হয়। | SQL সাধারণত relational databases (যেমন MySQL, SQL Server) এর মধ্যে ব্যবহৃত হয়। |
| DAX এক্সপ্রেশন এবং ক্যালকুলেশন তৈরিতে ফোকাস করে। | SQL ডেটা স্টোরেজ এবং ডেটা রিট্রিভাল এর জন্য ব্যবহৃত হয়। |
| DAX Query কমপ্লেক্স ক্যালকুলেশন ও বিশ্লেষণ এবং row context এবং filter context এর সাথে কাজ করে। | SQL Query সাধারণত SELECT, INSERT, UPDATE, DELETE এবং JOIN এর মাধ্যমে কাজ করে। |
৫. Performance Considerations for DAX Queries
DAX Query রান করার সময় কিছু পারফরম্যান্স সতর্কতা নেওয়া উচিত, বিশেষ করে যদি ডেটা মডেল বড় হয়:
- Efficient Data Model: DAX Queries এর কার্যকারিতা ডেটা মডেলের উপর নির্ভর করে। সুতরাং, data model কে সঠিকভাবে অপটিমাইজ করা প্রয়োজন।
- Minimize Complexity: বেশি জটিল DAX Queries এড়িয়ে চলুন। প্রয়োজনীয় ফাংশন ব্যবহার করুন এবং অপ্রয়োজনীয় ফাংশনগুলি বাদ দিন।
- Use Variables: Variables ব্যবহার করুন যাতে এক্সপ্রেশনগুলির পুনঃব্যবহার করা যায় এবং কোডটি আরও দ্রুত চলে।
- Limit the Data: ফিল্টার প্রয়োগ করুন এবং ডেটা সেটের আকার সীমিত করুন যাতে কম ডেটা নিয়ে কাজ করতে হয় এবং ক্যালকুলেশন দ্রুত হয়।
সারাংশ
DAX Queries হল Power BI, PowerPivot, এবং SSAS-এ ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করার জন্য ব্যবহৃত শক্তিশালী টুল। DAX Queries দিয়ে আপনি ডেটা মডেল থেকে ডেটা পুনরুদ্ধার করতে পারেন, ফিল্টার প্রয়োগ করতে পারেন, গ্রুপিং করতে পারেন এবং সময়ভিত্তিক ক্যালকুলেশন করতে পারেন। DAX Queries এর মাধ্যমে Power BI এবং SSAS-এ জটিল বিশ্লেষণ এবং রিপোর্ট তৈরি করা সম্ভব হয়, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য গুরুত্বপূর্ণ।
DAX (Data Analysis Expressions) হলো একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। DAX ফাংশনগুলি সাধারণত calculated columns, measures, এবং tables তৈরির জন্য ব্যবহৃত হয়, কিন্তু আপনি DAX-এ data querying এর জন্য EVALUATE স্টেটমেন্টও ব্যবহার করতে পারেন।
EVALUATE স্টেটমেন্ট মূলত DAX-এ queries বা ডেটার evaluation এর জন্য ব্যবহৃত হয় এবং এটি Tabular Models-এ ব্যবহৃত হয় SQL-like querying এর মতো কার্যকলাপ করার জন্য।
এই প্রবন্ধে, আমরা EVALUATE স্টেটমেন্ট এবং data querying এর মাধ্যমে কিভাবে DAX ব্যবহার করা যায় তা আলোচনা করব।
১. EVALUATE Statement কি?
EVALUATE স্টেটমেন্টটি DAX-এর একটি বিশেষ ক্যালকুলেশন স্টেটমেন্ট যা ডেটার query তৈরি করতে এবং একটি টেবিল বা ডেটার সেট ফেরত দিতে ব্যবহৃত হয়। এটি মূলত Tabular Models এর মধ্যে কাজ করে এবং SQL-like querying এর মতো আচরণ করে। এর মাধ্যমে আপনি ডেটাকে evaluate বা examine করতে পারেন এবং পরবর্তী ক্যালকুলেশনের জন্য প্রাসঙ্গিক ডেটা বের করতে পারেন।
Syntax:
EVALUATE <table_expression>
- <table_expression>: এটি একটি DAX টেবিল এক্সপ্রেশন, যা আপনি EVALUATE স্টেটমেন্টের মাধ্যমে ফেরত দিতে চান।
২. EVALUATE ব্যবহার করার প্রাথমিক উদাহরণ
ধরা যাক, আপনার একটি Sales টেবিল রয়েছে এবং আপনি ProductID, Region, এবং SalesAmount এর মান দেখতে চান। আপনি EVALUATE স্টেটমেন্ট ব্যবহার করে একটি query তৈরি করতে পারেন:
EVALUATE Sales
এটি Sales টেবিলের সমস্ত সারি এবং কলাম ফেরত দেবে।
৩. FILTER ব্যবহার করে EVALUATE এর সাথে ডেটা ফিল্টার করা
আপনি EVALUATE স্টেটমেন্টের মাধ্যমে ডেটা filter করতে পারেন FILTER ফাংশন ব্যবহার করে। ধরুন, আপনি Sales টেবিল থেকে এমন বিক্রয় বের করতে চান, যেখানে SalesAmount 1000 এর বেশি:
EVALUATE
FILTER(Sales, Sales[SalesAmount] > 1000)
এটি শুধুমাত্র সেই Sales রেকর্ডগুলি ফেরত দেবে, যেখানে SalesAmount 1000 এর বেশি।
৪. EVALUATE স্টেটমেন্টের সাথে CALCULATETABLE ব্যবহার করা
CALCULATETABLE ফাংশনটি একটি নতুন টেবিল তৈরি করে, যেখানে আপনি একটি ক্যালকুলেশন এবং ফিল্টার প্রয়োগ করতে পারেন। আপনি EVALUATE স্টেটমেন্টের সাথে CALCULATETABLE ফাংশন ব্যবহার করে আরো জটিল ক্যালকুলেশন করতে পারেন।
ধরা যাক, আপনি Sales টেবিল থেকে Region "East" এর জন্য SalesAmount এর যোগফল দেখতে চান:
EVALUATE
CALCULATETABLE(
SUMMARIZE(Sales, Sales[ProductID], "Total Sales", SUM(Sales[SalesAmount])),
Sales[Region] = "East"
)
এটি Sales টেবিল থেকে Region "East"-এর জন্য ProductID এবং তাদের Total Sales (যেখানে SalesAmount যোগফল হবে) ফেরত দেবে।
৫. ORDER BY ব্যবহার করে EVALUATE স্টেটমেন্টে ডেটা সাজানো
EVALUATE স্টেটমেন্টে আপনি ORDER BY ক্লজ ব্যবহার করে ডেটা সাজাতে পারেন। ধরুন, আপনি Sales টেবিল থেকে ProductID এবং SalesAmount এর যোগফল বের করতে চান এবং সাজাতে চান SalesAmount এর ডেসেন্ডিং অর্ডারে:
EVALUATE
SUMMARIZE(Sales, Sales[ProductID], "Total Sales", SUM(Sales[SalesAmount]))
ORDER BY
[Total Sales] DESC
এটি ProductID অনুযায়ী SalesAmount এর যোগফল বের করবে এবং SalesAmount এর ভিত্তিতে সাজানো হবে (ডেসেন্ডিং অর্ডারে)।
৬. EVALUATE স্টেটমেন্টের মাধ্যমে মেজার তৈরি করা
EVALUATE স্টেটমেন্টের মাধ্যমে আপনি measures তৈরি করে querying করতে পারেন। ধরুন, আপনি Sales টেবিল থেকে Total Sales মেজার তৈরি করতে চান এবং সেটি Region "East" অনুযায়ী সাজাতে চান:
EVALUATE
SUMMARIZE(
Sales,
Sales[Region],
"Total Sales", SUM(Sales[SalesAmount])
)
ORDER BY
[Total Sales] DESC
এটি Sales টেবিল থেকে Region অনুযায়ী SalesAmount এর যোগফল বের করবে এবং Total Sales এর ভিত্তিতে সাজানো হবে।
৭. EVALUATE এবং VAR ব্যবহার করে কাস্টম ক্যালকুলেশন
আপনি EVALUATE স্টেটমেন্টে VAR ব্যবহার করে কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। VAR ব্যবহার করে আপনি একটি মান বা এক্সপ্রেশন store করে RETURN স্টেটমেন্টে ফলাফল ফেরত দিতে পারেন।
EVALUATE
VAR TotalSales = SUM(Sales[SalesAmount])
RETURN
SUMMARIZE(Sales, Sales[Region], "Total Sales", TotalSales)
এখানে, VAR এর মাধ্যমে TotalSales হিসাব করা হয়েছে এবং তারপর SUMMARIZE ফাংশন ব্যবহার করে Region এবং Total Sales ফেরত দেওয়া হয়েছে।
৮. EVALUATE ব্যবহার করে Join-like কার্যকলাপ
EVALUATE স্টেটমেন্টের মাধ্যমে আপনি Join-এর মতো কার্যকলাপ করতে পারেন। ধরুন, আপনি Sales টেবিল এবং Products টেবিলের ProductID অনুযায়ী সম্পর্কিত তথ্য দেখতে চান:
EVALUATE
NATURALINNERJOIN(Sales, Products)
এটি Sales এবং Products টেবিলকে ProductID কলাম অনুযায়ী সংযুক্ত করবে এবং উভয় টেবিলের সম্পর্কিত ডেটা প্রদান করবে।
সারাংশ
EVALUATE স্টেটমেন্টটি DAX-এ data querying এবং data evaluation করার জন্য একটি শক্তিশালী টুল। এটি Tabular Models-এ SQL-like querying করার জন্য ব্যবহৃত হয়, যা ডেটাকে ফিল্টার, সাজানো, এবং এক্সপ্রেস করা সহজ করে তোলে। EVALUATE ব্যবহার করে আপনি ডেটা retrieve করতে পারেন এবং filtering, sorting, এবং aggregation করতে পারেন। এটি SUMMARIZE, CALCULATETABLE, FILTER, এবং ORDER BY ফাংশনের মাধ্যমে আরো শক্তিশালী এবং কাস্টম ডেটা বিশ্লেষণ তৈরি করতে সাহায্য করে।
DAX (Data Analysis Expressions) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন, এবং data visualization তৈরির জন্য। DAX Querying ব্যবহার করে আপনি data visualization তৈরি করার জন্য complex calculations করতে পারেন এবং ডেটাকে আরও গভীরভাবে বিশ্লেষণ করতে সক্ষম হন।
এই প্রবন্ধে আমরা দেখব কিভাবে DAX querying ব্যবহার করে data visualization তৈরি করা যায় এবং কীভাবে measures, calculated columns, filtering, এবং aggregation ফাংশন ব্যবহার করে visuals তৈরি করা যায়।
১. DAX Querying কী?
DAX Querying হল একটি প্রক্রিয়া যা Power BI বা Power Pivot এ data models এর সাথে queries বা এক্সপ্রেশন তৈরি করে, যা data analysis এবং visualization তৈরির জন্য ব্যবহৃত হয়। DAX ব্যবহার করে, আপনি measures, calculated columns, এবং tables তৈরি করতে পারেন যা Power BI-এর visuals এবং রিপোর্ট তৈরিতে সাহায্য করে।
DAX Querying এর মাধ্যমে আপনি:
- ডেটা মডেল থেকে custom calculations তৈরি করতে পারেন।
- aggregation এবং filtering ফাংশন ব্যবহার করে visualizations এর জন্য প্রয়োজনীয় ডেটা নির্বাচন করতে পারেন।
- time intelligence ফাংশন ব্যবহার করে time-based analysis করতে পারেন।
২. Data Visualization তৈরি করতে DAX Querying ব্যবহার করা
Data Visualization তৈরি করতে DAX ব্যবহার করে বিভিন্ন ধরনের কাস্টম measure এবং calculated columns তৈরি করতে পারেন। এটি ডেটা বিশ্লেষণের জন্য interactive এবং dynamic visuals তৈরি করতে সহায়ক হয়।
Step 1: Measures তৈরি করা
Measures হল DAX-এ dynamic calculations যা ডেটার উপর ভিত্তি করে ফলাফল প্রদান করে। Measure সাধারণত aggregation functions যেমন SUM, AVERAGE, COUNT, MAX, MIN, এবং Time Intelligence Functions যেমন YTD, MTD ইত্যাদি ব্যবহার করে তৈরি করা হয়।
Example: Total Sales Measure
ধরা যাক, আপনি Sales টেবিলের মোট বিক্রয় পরিমাণ বের করতে চান:
Total Sales = SUM(Sales[Amount])
এটি Sales টেবিলের Amount কলামের মোট যোগফল বের করবে এবং একটি measure তৈরি করবে যা আপনি Power BI এর visuals এ ব্যবহার করতে পারবেন।
Step 2: Calculated Columns তৈরি করা
Calculated columns হল নতুন কলাম যা টেবিলের প্রতিটি সারির জন্য DAX ফাংশন দ্বারা হিসাব করা হয়। এটি সাধারণত নির্দিষ্ট শর্তের ভিত্তিতে কাস্টম মান তৈরি করতে ব্যবহৃত হয়।
Example: Profit Calculation Using Calculated Column
ধরা যাক, আপনি Sales টেবিল থেকে একটি নতুন Profit কলাম তৈরি করতে চান, যা Sales[Amount] এবং Sales[Cost] এর পার্থক্য বের করবে:
Profit = Sales[Amount] - Sales[Cost]
এটি Sales টেবিলের প্রতিটি সারির জন্য Profit হিসাব করবে এবং একটি নতুন কলাম তৈরি করবে।
৩. Time Intelligence Functions দিয়ে Data Visualization
Time Intelligence Functions DAX-এ বিশেষভাবে ব্যবহার করা হয় যখন আপনাকে time-based calculations করতে হয়, যেমন Year-to-Date (YTD), Quarter-to-Date (QTD), এবং Month-to-Date (MTD)। এই ধরনের ক্যালকুলেশনগুলি সময় ভিত্তিক ডেটার বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশনে সহায়ক।
Example: Year-to-Date (YTD) Sales
যদি আপনি YTD Sales বের করতে চান, তাহলে আপনি TOTALYTD ফাংশন ব্যবহার করতে পারেন:
YTD Sales = TOTALYTD(SUM(Sales[Amount]), Sales[Date])
এটি Sales টেবিলের Amount কলামের Year-to-Date (YTD) মোট বিক্রয় নির্ধারণ করবে এবং এটি Power BI তে dynamic visualization তৈরি করতে সহায়ক হবে।
Example: Same Period Last Year Sales
যদি আপনি Sales এর গত বছরের একই সময়ের বিক্রয় পরিমাণ তুলনা করতে চান:
Sales Last Year = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Sales[Date]))
এটি Sales টেবিলের Amount কলামের গত বছরের একই সময়ের বিক্রয় পরিমাণ বের করবে এবং এই ডেটাকে time-based analysis এর জন্য ভিজ্যুয়ালে ব্যবহার করা যাবে।
৪. Filtering Data for Visualization
DAX Filtering ফাংশনগুলি ডেটা সিলেকশন এবং dynamic filtering এর জন্য ব্যবহৃত হয়। যখন আপনি Power BI তে DAX queries ব্যবহার করেন, আপনি বিভিন্ন শর্তের ভিত্তিতে ডেটা ফিল্টার করতে পারেন।
Example: Filtering Data for a Specific Region
ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল দেখতে চান যেখানে Region "East" হতে হবে:
Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")
এটি শুধুমাত্র Sales[Region] = "East" শর্তে মিলিয়ে Sales[Amount] এর মোট যোগফল বের করবে এবং Power BI তে dynamic visualization তৈরি করতে সহায়ক হবে।
Example: Filtering Based on Date
যদি আপনি Sales টেবিলের Amount ফিল্টার করতে চান একটি নির্দিষ্ট তারিখের মধ্যে:
Sales in January 2021 = CALCULATE(SUM(Sales[Amount]), Sales[Date] >= DATE(2021, 1, 1), Sales[Date] <= DATE(2021, 1, 31))
এটি Sales টেবিলের Amount এর যোগফল বের করবে যেখানে Sales[Date] ১ জানুয়ারি ২০২১ থেকে ৩১ জানুয়ারি ২০২১ এর মধ্যে।
৫. Using Aggregation with DAX for Data Visualization
DAX Querying তে aggregation functions ব্যবহার করা খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি dynamic reports তৈরি করতে চান। SUMX, AVERAGEX, COUNTX ইত্যাদি iteration functions ব্যবহার করে আপনি ডেটার উপর row-level aggregation করতে পারেন।
Example: Dynamic Sales per Product
ধরা যাক, আপনি Sales টেবিলের Quantity এবং UnitPrice এর গুণফল নিয়ে মোট বিক্রয় পরিমাণ বের করতে চান, এবং এটি প্রতিটি পণ্যের জন্য Power BI তে dynamic visualization তৈরির জন্য ব্যবহার করবেন:
Total Sales per Product = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])
এটি Sales টেবিলের প্রতিটি সারির জন্য Quantity এবং UnitPrice গুণফল বের করে এবং তারপরে সব সারির যোগফল প্রদান করবে।
৬. Creating Interactive Dashboards with DAX
DAX querying এর মাধ্যমে আপনি interactive dashboards তৈরি করতে পারেন, যা ব্যবহারকারীদের জন্য dynamic filtering এবং drill-down বৈশিষ্ট্য প্রদান করে। আপনি measures এবং calculated columns ব্যবহার করে interactive visuals তৈরি করতে পারেন এবং DAX queries ব্যবহার করে ডেটা সিলেকশন এবং কাস্টম aggregation করতে পারেন।
Example: Drill Down with Product Categories
যদি আপনি একটি ড্যাশবোর্ড তৈরি করতে চান যেখানে ব্যবহারকারী Product Category অনুযায়ী বিক্রয় বিশ্লেষণ করতে পারে, তাহলে আপনি DAX measures এবং filtering ফাংশন ব্যবহার করবেন।
Sales by Category = CALCULATE(SUM(Sales[Amount]), Sales[ProductCategory] = "Electronics")
এটি Sales টেবিলের জন্য ProductCategory "Electronics" এর ভিত্তিতে Sales[Amount] এর মোট যোগফল বের করবে এবং ড্যাশবোর্ডে interactive ভাবে এটি ব্যবহার করা যাবে।
সারাংশ
DAX Querying একটি শক্তিশালী টুল যা Power BI তে dynamic reports এবং interactive dashboards তৈরির জন্য ব্যবহৃত হয়। DAX ব্যবহার করে আপনি measures, calculated columns, time intelligence, filtering, এবং aggregation functions এর মাধ্যমে ডেটা বিশ্লেষণ করতে পারেন এবং সেই বিশ্লেষণকে visuals-এ রূপান্তরিত করতে পারেন। এই প্রক্রিয়া complex calculations, conditional aggregations, এবং time-based analysis-এ সহায়ক হয়ে থাকে, যা ব্যবহারকারীদের আরও কার্যকরী এবং তথ্যভিত্তিক visualization তৈরি করতে সাহায্য করে।
DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলি ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করার জন্য ব্যবহৃত হয়। DAX-এ কিছু ফাংশন যেমন SUMMARIZE এবং ADDCOLUMNS ব্যবহার করে আপনি complex queries তৈরি করতে পারেন, যেখানে একাধিক কলামের উপর গাণিতিক গণনা এবং গ্রুপিং করতে সক্ষম হন।
এই প্রবন্ধে, আমরা SUMMARIZE এবং ADDCOLUMNS ফাংশনগুলির মাধ্যমে complex queries তৈরি করার প্রক্রিয়া, ব্যবহার এবং উদাহরণ নিয়ে বিস্তারিত আলোচনা করব।
১. SUMMARIZE ফাংশন
SUMMARIZE ফাংশনটি একটি টেবিলের বা এক্সপ্রেশনের উপর গ্রুপিং এবং অ্যাগ্রিগেটেড ক্যালকুলেশন করার জন্য ব্যবহৃত হয়। এটি গ্রুপবাই অপারেশনের মতো কাজ করে এবং নির্দিষ্ট কলামের উপর গ্রুপিং করে, পরে বিভিন্ন aggregations (যেমন SUM, AVERAGE, COUNT) প্রয়োগ করে।
Syntax:
SUMMARIZE(<table>, <group_by_column1>, <group_by_column2>, ..., <new_column1>, <aggregation_function1>, <new_column2>, <aggregation_function2>, ...)
- : টেবিল বা ডেটা এক্সপ্রেশন, যা থেকে আপনি ডেটা গ্রুপ করতে চান।
- <group_by_column>: এক বা একাধিক কলাম যা আপনার গ্রুপিংয়ের জন্য ব্যবহার হবে।
- <new_column>: নতুন কলামের নাম যা আপনি অ্যাগ্রিগেটেড ফলাফল সংরক্ষণ করতে চান।
- <aggregation_function>: সেই কলামের উপর প্রয়োগ করতে চান এমন aggregation function (যেমন: SUM, AVERAGE, MIN, MAX)।
ব্যবহার:
ধরা যাক, আপনার কাছে Sales টেবিল রয়েছে এবং আপনি ProductID এবং Region অনুযায়ী বিক্রয়ের পরিমাণ এবং গড় বিক্রয়ের পরিমাণ দেখতে চান:
Product Sales Summary = SUMMARIZE(
Sales,
Sales[ProductID],
Sales[Region],
"Total Sales", SUM(Sales[Amount]),
"Average Sales", AVERAGE(Sales[Amount])
)
এটি Sales টেবিলের ProductID এবং Region অনুসারে দুটি নতুন কলাম তৈরি করবে:
- Total Sales: বিক্রয়ের মোট পরিমাণ।
- Average Sales: বিক্রয়ের গড় পরিমাণ।
এটি একটি নতুন টেবিল তৈরি করবে, যেখানে প্রতিটি ProductID এবং Region অনুসারে মোট এবং গড় বিক্রয়ের পরিমাণ থাকবে।
২. ADDCOLUMNS ফাংশন
ADDCOLUMNS ফাংশনটি ব্যবহৃত হয় একটি টেবিলের উপর নতুন কলাম যোগ করার জন্য। এটি আপনার গ্রুপ করা ডেটার উপর কাস্টম ক্যালকুলেশন যোগ করতে সাহায্য করে এবং নতুন কলাম তৈরি করে। এটি SUMMARIZE ফাংশনের সাথে একত্রিত হয়ে আরও শক্তিশালী কাস্টম কোয়েরি তৈরি করতে ব্যবহৃত হতে পারে।
Syntax:
ADDCOLUMNS(<table>, <new_column1>, <expression1>, [<new_column2>, <expression2>], ...)
- : যে টেবিলের উপর নতুন কলাম যোগ করতে চান।
- <new_column>: নতুন কলামের নাম।
- : সেই কলামের জন্য কাস্টম ক্যালকুলেশন বা এক্সপ্রেশন।
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের উপর নতুন কলাম যোগ করতে চান, যা প্রতিটি বিক্রয়ের জন্য SalesAmount এবং Discount এর মধ্যে পার্থক্য বের করবে:
Sales with Discount = ADDCOLUMNS(
Sales,
"Discounted Amount", Sales[Amount] - Sales[Discount]
)
এটি Sales টেবিলের প্রতিটি সারিতে একটি নতুন কলাম Discounted Amount যোগ করবে, যা বিক্রয়ের পরিমাণ থেকে ডিসকাউন্ট বাদ দিয়ে হবে।
COMBINING ADDCOLUMNS with SUMMARIZE:
আপনি SUMMARIZE ফাংশনের সাথে ADDCOLUMNS ফাংশনটি একত্রিত করে আরও জটিল কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি যদি ProductID এবং Region অনুসারে SalesAmount এবং Discount যোগ করে একটি কাস্টম ক্যালকুলেশন তৈরি করতে চান:
Product Sales with Discount = ADDCOLUMNS(
SUMMARIZE(Sales, Sales[ProductID], Sales[Region]),
"Total Sales", SUM(Sales[Amount]),
"Discounted Sales", SUM(Sales[Amount]) - SUM(Sales[Discount])
)
এটি ProductID এবং Region অনুসারে মোট বিক্রয় এবং ডিসকাউন্ট বাদ দেওয়া বিক্রয় পরিমাণের জন্য একটি নতুন টেবিল তৈরি করবে।
৩. Complex Queries with SUMMARIZE and ADDCOLUMNS
SUMMARIZE এবং ADDCOLUMNS ফাংশনগুলি একত্রিত হয়ে আরও জটিল কাস্টম ক্যালকুলেশন তৈরি করতে ব্যবহৃত হয়। নিচে একটি complex query এর উদাহরণ দেওয়া হল যেখানে SUMMARIZE, ADDCOLUMNS, এবং FILTER ফাংশন একসাথে ব্যবহার করা হয়েছে:
Example: Calculating Total Sales and Discounted Sales by Product and Region
ধরা যাক, আপনি Sales টেবিলের জন্য একটি কাস্টম ক্যালকুলেশন তৈরি করতে চান, যা ProductID এবং Region অনুসারে মোট বিক্রয় এবং ডিসকাউন্ট বাদ দেওয়া বিক্রয় পরিমাণের পরিসংখ্যান দেখাবে এবং Amount 1000 এর বেশি এমন বিক্রয়ের পরিসংখ্যান বের করবে।
Filtered Sales Summary = ADDCOLUMNS(
SUMMARIZE(Sales, Sales[ProductID], Sales[Region]),
"Total Sales", SUM(Sales[Amount]),
"Discounted Sales", SUM(Sales[Amount]) - SUM(Sales[Discount]),
"Filtered Sales", CALCULATE(SUM(Sales[Amount]), Sales[Amount] > 1000)
)
এখানে:
- SUMMARIZE ফাংশনটি ProductID এবং Region এর উপর গ্রুপিং করবে।
- ADDCOLUMNS ফাংশনটি নতুন কলাম Total Sales, Discounted Sales, এবং Filtered Sales যোগ করবে।
- CALCULATE ফাংশনটি Sales[Amount] > 1000 শর্তে বিক্রয় পরিমাণ বের করবে।
এটি একটি টেবিল তৈরি করবে যেখানে ProductID এবং Region অনুসারে Total Sales, Discounted Sales, এবং Filtered Sales পরিমাণ প্রদর্শিত হবে।
৪. Best Practices for Using SUMMARIZE and ADDCOLUMNS
- Minimize Nested Expressions: SUMMARIZE এবং ADDCOLUMNS এর মধ্যে nested expressions ব্যবহার করলে পারফরম্যান্স কমতে পারে। যতটা সম্ভব সিম্পল এক্সপ্রেশন ব্যবহার করুন।
- Use FILTER to Reduce Data: FILTER ফাংশনটি ব্যবহার করে ডেটা ফিল্টার করুন যাতে আপনি শুধু প্রয়োজনীয় ডেটার উপর ক্যালকুলেশন করেন। এটি পারফরম্যান্স উন্নত করতে সাহায্য করবে।
- Avoid Using Too Many Columns in SUMMARIZE: একাধিক কলাম ব্যবহার করার সময় এটি পারফরম্যান্সে প্রভাব ফেলতে পারে। SUMMARIZE ফাংশনে শুধুমাত্র প্রয়োজনীয় কলামগুলো অন্তর্ভুক্ত করুন।
- Variables for Repetitive Calculations: যখন আপনি এক্সপ্রেশন পুনরায় ব্যবহার করবেন, তখন variables ব্যবহার করুন, যাতে ক্যালকুলেশনগুলো বারবার না করা হয়।
সারাংশ
SUMMARIZE এবং ADDCOLUMNS ফাংশনগুলি DAX-এ complex queries তৈরি করতে অত্যন্ত শক্তিশালী টুলস। SUMMARIZE ফাংশনটি ডেটাকে গ্রুপ করে এবং ADDCOLUMNS ফাংশনটি নতুন কলাম যোগ করতে ব্যবহৃত হয়। একত্রে ব্যবহারের মাধ্যমে আপনি aggregation এবং custom calculations তৈরি করতে পারেন, যা Power BI বা Excel-এ ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরির জন্য কার্যকরী। এই ফাংশনগুলির সঠিক ব্যবহার নিশ্চিত করলে আপনি আরও কার্যকরী এবং অপটিমাইজড কাস্টম ক্যালকুলেশন তৈরি করতে সক্ষম হবেন।
Read more