Advanced Calculations with DAX গাইড ও নোট

Big Data and Analytics - ড্যাক্স দিয়ে ডেটা মডেলিং (Data Modeling with DAX)
314

DAX (Data Analysis Expressions) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। Advanced calculations DAX-এ তৈরি করা যায় যেখানে জটিল ক্যালকুলেশন, শর্তসাপেক্ষ গণনা, সময় ভিত্তিক বিশ্লেষণ, এবং কাস্টম মেট্রিক্স অন্তর্ভুক্ত থাকে। DAX ফাংশনগুলো বিভিন্ন aggregation, iteration, filtering, এবং context manipulation এর মাধ্যমে শক্তিশালী এবং বিশেষ ধরনের কাস্টম ক্যালকুলেশন তৈরি করতে সহায়ক।

এই প্রবন্ধে, আমরা DAX-এ advanced calculations তৈরি করার বিভিন্ন পদ্ধতি নিয়ে আলোচনা করব, যেমন complex aggregation, context manipulation, conditional calculation, এবং time intelligence ব্যবহার করে কাস্টম ক্যালকুলেশন তৈরি করা।


১. Complex Aggregation with DAX

DAX-এ complex aggregation করতে আপনি SUMX, AVERAGEX, COUNTX এবং FILTER ফাংশন ব্যবহার করতে পারেন। এগুলি iterators হিসেবে কাজ করে এবং ডেটার উপর row-by-row calculation করে কাস্টম ফলাফল তৈরি করতে সক্ষম।

SUMX: Conditional Aggregation

SUMX ফাংশনটি একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক যোগফল বের করতে ব্যবহৃত হয়।

Syntax:

SUMX(<table>, <expression>)

Example: ধরা যাক, আপনি Sales টেবিল থেকে প্রতিটি পণ্যের SalesAmount এবং Discount এর উপর ভিত্তি করে Total Sales হিসাব করতে চান:

Total Sales = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice] - Sales[Discount])

এখানে SUMX ফাংশনটি Sales টেবিলের প্রতিটি সারির জন্য Quantity এবং UnitPrice গুণফল থেকে Discount বাদ দিয়ে মোট বিক্রয় পরিমাণ নির্ধারণ করবে।


AVERAGEX: Conditional Averaging

AVERAGEX ফাংশনটি একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক গড় নির্ধারণ করতে ব্যবহৃত হয়।

Syntax:

AVERAGEX(<table>, <expression>)

Example: ধরা যাক, আপনি Sales টেবিল থেকে প্রতিটি পণ্যের গড় বিক্রয় পরিমাণ বের করতে চান:

Average Sale = AVERAGEX(Sales, Sales[Quantity] * Sales[UnitPrice])

এখানে AVERAGEX ফাংশনটি Sales টেবিলের প্রতিটি সারির জন্য Quantity এবং UnitPrice গুণফল বের করে গড় নির্ধারণ করবে।


২. Context Manipulation with CALCULATE

CALCULATE ফাংশনটি DAX-এর সবচেয়ে শক্তিশালী ফাংশনগুলির মধ্যে একটি। এটি একটি এক্সপ্রেশন বা ক্যালকুলেশনকে filter context পরিবর্তন করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি একটি কাস্টম ক্যালকুলেশন বা measure তৈরির জন্য ফিল্টার প্রয়োগ করতে পারেন।

Syntax:

CALCULATE(<expression>, <filter1>, <filter2>, ...)

Example:

ধরা যাক, আপনি Sales টেবিল থেকে Region "East" এর বিক্রয়ের পরিমাণ বের করতে চান:

Sales in East = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")

এখানে, CALCULATE ফাংশনটি Sales[Amount] এর মোট যোগফল বের করবে, কিন্তু শুধু সেই রেকর্ডগুলো থেকে যেখানে Sales[Region] হল "East"।


৩. Conditional Calculations with IF and SWITCH

IF এবং SWITCH ফাংশন ব্যবহার করে আপনি শর্তসাপেক্ষ ক্যালকুলেশন করতে পারেন। IF ফাংশনটি একটি সাধারণ শর্ত অনুযায়ী দুইটি ফলাফল ফেরত দিতে ব্যবহৃত হয়, আর SWITCH ফাংশনটি একাধিক শর্ত অনুযায়ী ফলাফল নির্ধারণ করতে ব্যবহৃত হয়।

IF Example:

ধরা যাক, আপনি চান যে Sales টেবিল থেকে SalesAmount 1000 এর বেশি হলে "High" এবং 1000 এর কম হলে "Low" দেখানো হবে:

Sales Category = IF(Sales[Amount] > 1000, "High", "Low")

SWITCH Example:

ধরা যাক, আপনি চান SalesAmount এর ভিত্তিতে বিভিন্ন ক্যাটেগরি (High, Medium, Low) তৈরি করতে:

Sales Category = SWITCH(
    TRUE(),
    Sales[Amount] > 1000, "High",
    Sales[Amount] > 500, "Medium",
    "Low"
)

এখানে SWITCH ফাংশনটি Sales[Amount] এর মান অনুযায়ী বিক্রয়ের ক্যাটেগরি নির্ধারণ করবে।


৪. Time Intelligence Calculations

Time Intelligence DAX-এ সময়ভিত্তিক বিশ্লেষণ এবং ক্যালকুলেশন করার জন্য ব্যবহৃত হয়। Time Intelligence Functions যেমন TOTALYTD, SAMEPERIODLASTYEAR, DATEADD ইত্যাদি ব্যবহার করে আপনি Year-to-Date (YTD), Month-to-Date (MTD), এবং Quarter-to-Date (QTD) এর মতো পরিসংখ্যান বের করতে পারেন।

TOTALYTD Example:

ধরা যাক, আপনি Sales টেবিলের জন্য Year-to-Date Sales বের করতে চান:

YTD Sales = TOTALYTD(SUM(Sales[Amount]), Sales[Date])

এটি Sales টেবিল থেকে Year-to-Date (YTD) বিক্রয়ের মোট যোগফল বের করবে।

SAMEPERIODLASTYEAR Example:

যদি আপনি Sales টেবিলের Same Period Last Year (SPLY) তুলনা করতে চান:

Sales Last Year = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(Sales[Date]))

এটি Sales টেবিল থেকে Same Period Last Year বিক্রয়ের পরিমাণ নির্ধারণ করবে।

DATEADD Example:

DATEADD ফাংশনটি একটি নির্দিষ্ট সময় পিরিয়ডের তুলনা করতে ব্যবহৃত হয়। ধরুন, আপনি যদি এক মাস আগের বিক্রয় পরিমাণ বের করতে চান:

Sales Last Month = CALCULATE(SUM(Sales[Amount]), DATEADD(Sales[Date], -1, MONTH))

এটি Sales টেবিলের Amount এর মোট যোগফল নির্ধারণ করবে গত মাসের জন্য।


৫. Advanced Iteration Functions (SUMX, AVERAGEX, COUNTX)

X Functions যেমন SUMX, AVERAGEX, COUNTX এবং MINX এগুলি iterators হিসেবে কাজ করে, যা একটি টেবিলের প্রতিটি সারি নিয়ে কাজ করে এবং একটি এক্সপ্রেশন বা ক্যালকুলেশন তৈরি করে। এগুলি বিশেষভাবে উপকারী যখন আপনাকে সারি ভিত্তিক ক্যালকুলেশন করতে হয়।

SUMX Example:

ধরা যাক, আপনি Sales টেবিলের জন্য Total Revenue বের করতে চান যেখানে Quantity এবং UnitPrice গুণফল করে:

Total Revenue = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])

এটি Sales টেবিলের প্রতিটি সারির জন্য Quantity এবং UnitPrice গুণফল করবে এবং তাদের যোগফল বের করবে।

AVERAGEX Example:

ধরা যাক, আপনি Sales টেবিলের জন্য গড় বিক্রয় পরিমাণ বের করতে চান, যেখানে Quantity এবং UnitPrice গুণফল হবে:

Average Revenue = AVERAGEX(Sales, Sales[Quantity] * Sales[UnitPrice])

এটি Sales টেবিলের প্রতিটি সারির জন্য গড় বিক্রয় পরিমাণ নির্ধারণ করবে।


সারাংশ

DAX-এ advanced calculations তৈরি করা জটিল aggregation, iteration, এবং filter context নিয়ন্ত্রণের মাধ্যমে ডেটার উপর শক্তিশালী বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে সহায়ক। CALCULATE, SUMX, AVERAGEX, TIME INTELLIGENCE, IF এবং SWITCH ফাংশন ব্যবহার করে আপনি conditional aggregation, row-by-row calculations, এবং time-based analysis তৈরি করতে পারেন। DAX এর এই ফাংশনগুলির সাহায্যে আপনি Power BI এবং Excel-এ আরও কার্যকরী এবং গভীর বিশ্লেষণ করতে পারবেন।

Content added By

Advanced Mathematical Functions (RANKX, TOPN)

235

DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। Advanced Mathematical Functions ড্যাক্সের মধ্যে অত্যন্ত কার্যকরী, যা ব্যবহার করে আপনি ডেটার উপর ranking, top-n filtering, এবং অন্যান্য গণনা করতে পারেন। এই প্রবন্ধে আমরা RANKX এবং TOPN ফাংশন সম্পর্কে বিস্তারিত আলোচনা করব, যা ranking এবং top-n selection করতে ব্যবহৃত হয়।


১. RANKX ফাংশন

RANKX ফাংশনটি একটি ranking function যা একটি এক্সপ্রেশন বা কলামের মধ্যে values এর র‍্যাঙ্ক নির্ধারণ করতে ব্যবহৃত হয়। এটি ডেটার মধ্যে শ্রেণীবিন্যাস বা ranking তৈরি করতে সহায়ক। সাধারণত এটি aggregation ফাংশনগুলির সাথে ব্যবহৃত হয়, যেমন SUM, AVERAGE, MAX, ইত্যাদি, যাতে একটি কলামের মানের উপর ভিত্তি করে ডেটা র‍্যাঙ্ক করা যায়।

Syntax:

RANKX(<table>, <expression>, [<value>, [<order>, [<ties>]]])
  • : এটি সেই টেবিল বা এক্সপ্রেশন যা র‍্যাঙ্কিং করতে হবে।
  • : এটি র‍্যাঙ্কের জন্য যে এক্সপ্রেশন বা মান ব্যবহার হবে।
  • (ঐচ্ছিক): এটি সেই মান যা র‍্যাঙ্ক করা হবে।
  • (ঐচ্ছিক): ASC (ascending) বা DESC (descending) হিসেবে র‍্যাঙ্কিং নির্ধারণ করা।
  • (ঐচ্ছিক): র‍্যাঙ্কিংয়ের ক্ষেত্রে যদি একাধিক মান একই হয়, তবে Dense বা Skip নির্বাচন করতে পারবেন।

ব্যবহার:

ধরা যাক, আপনার Sales টেবিল রয়েছে এবং আপনি ProductID অনুযায়ী SalesAmount এর র‍্যাঙ্ক বের করতে চান। তাহলে আপনি RANKX ফাংশনটি ব্যবহার করবেন:

Sales Rank = RANKX(
    ALL(Sales[ProductID]),
    SUM(Sales[SalesAmount]),
    ,
    DESC,
    Dense
)

এখানে:

  • ALL(Sales[ProductID]) ফাংশনটি Sales টেবিলের ProductID কলামের ফিল্টার দূর করে।
  • SUM(Sales[SalesAmount]) ফাংশনটি SalesAmount এর যোগফল নির্ধারণ করবে।
  • DESC নির্দেশ করে যে র‍্যাঙ্কিং descending (বেশি থেকে কম) হবে।
  • Dense নিশ্চিত করবে যে সমান মানের জন্য র‍্যাঙ্ক একে অপরের কাছাকাছি থাকবে।

Real-World Use Case:

RANKX ফাংশনটি ব্যবহৃত হতে পারে যখন আপনি ব্যবসায়িক KPI (Key Performance Indicator) এর জন্য র‍্যাঙ্ক তৈরি করতে চান, যেমন sales ranking, employee ranking, বা product ranking


২. TOPN ফাংশন

TOPN ফাংশনটি একটি টেবিল বা কলামের শীর্ষ N মান নির্বাচন করতে ব্যবহৃত হয়। এটি একটি টেবিলের মধ্যে top-n values খুঁজে বের করতে সহায়ক, যা বিশ্লেষণের জন্য কার্যকরী হতে পারে, যেমন সর্বোচ্চ বিক্রিত পণ্য বা সর্বোচ্চ লাভজনক বিক্রয়।

Syntax:

TOPN(<N>, <table>, <order_by_expression>, [<order>])
  • : যে সংখ্যাটি top-N নির্বাচন করবে।
  • : যে টেবিল বা এক্সপ্রেশন থেকে ডেটা নেওয়া হবে।
  • <order_by_expression>: ডেটা সাজানোর জন্য যে এক্সপ্রেশন ব্যবহার করা হবে।
  • (ঐচ্ছিক): ASC (ascending) বা DESC (descending) হিসেবে সাজানো হবে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিল থেকে শীর্ষ 5 পণ্য নির্বাচন করতে চান, যেগুলি সর্বোচ্চ বিক্রয় পরিমাণ করেছে:

Top 5 Products = 
TOPN(
    5, 
    Sales, 
    Sales[SalesAmount], 
    DESC
)

এটি Sales টেবিলের শীর্ষ 5 পণ্য নির্বাচন করবে, যেখানে SalesAmount সর্বাধিক থাকবে।

Real-World Use Case:

TOPN ফাংশনটি ব্যবহৃত হতে পারে যখন আপনি Power BI রিপোর্টে top N sales products, top N customers বা top N regions দেখতে চান, যেখানে আপনি নির্দিষ্ট শীর্ষ N আইটেমকে বিশ্লেষণ করতে চান।


৩. RANKX এবং TOPN এর মধ্যে পার্থক্য

FunctionRANKXTOPN
Purposeএকটি এক্সপ্রেশন বা কলামের মধ্যে র‍্যাঙ্ক নির্ধারণ করা।একটি টেবিল বা এক্সপ্রেশন থেকে শীর্ষ N মান নির্বাচন করা।
UsageRanking তৈরি করতে ব্যবহৃত হয়।Top-N Selection করতে ব্যবহৃত হয়।
Resultডেটার র‍্যাঙ্ক বা শ্রেণীবিন্যাস।ডেটার শীর্ষ N মান।
Examplesপণ্যের র‍্যাঙ্কিং, বিক্রয়ের র‍্যাঙ্কিং।শীর্ষ 10 পণ্য, শীর্ষ 5 বিক্রয় অঞ্চল।

৪. RANKX এবং TOPN এর Performance Optimization

RANKX এবং TOPN ফাংশনগুলি যখন বৃহৎ ডেটাসেটে ব্যবহৃত হয়, তখন সঠিকভাবে পারফরম্যান্স অপটিমাইজ করা জরুরি। কিছু পারফরম্যান্স টিপস:

  1. Filter Data Before Applying RANKX or TOPN:
    • আপনার filter context ব্যবহার করে RANKX বা TOPN প্রয়োগের আগে ডেটা ফিল্টার করা উচিত, যাতে এটি শুধুমাত্র প্রয়োজনীয় ডেটা নিয়ে কাজ করে।
  2. Minimize Complex Expressions:
    • RANKX এবং TOPN এর মধ্যে কমপ্লেক্স এক্সপ্রেশন ব্যবহার করার পরিবর্তে সরল এক্সপ্রেশন ব্যবহার করুন, কারণ জটিল এক্সপ্রেশন পারফরম্যান্সে প্রভাব ফেলতে পারে।
  3. Avoid Calculating Ranks Repeatedly:
    • যদি আপনি একাধিক পৃষ্ঠা বা র‍্যাঙ্কিং তৈরির জন্য RANKX বা TOPN ব্যবহার করছেন, তবে র‍্যাঙ্কিং ফলাফলগুলি সংরক্ষণ করুন এবং প্রয়োজনে পুনরায় ব্যবহার করুন।
  4. Use Variables:
    • RANKX বা TOPN ফাংশনের মধ্যে variables ব্যবহার করে এক্সপ্রেশনগুলিকে সহজ এবং দ্রুত করতে পারেন, যা পারফরম্যান্স উন্নত করতে সাহায্য করে।

সারাংশ

RANKX এবং TOPN হল DAX-এর শক্তিশালী advanced mathematical functions যা ranking এবং top-n selection করতে ব্যবহৃত হয়। RANKX ফাংশনটি ডেটার মধ্যে র‍্যাঙ্ক নির্ধারণ করতে সহায়ক, এবং TOPN ফাংশনটি শীর্ষ N মান নির্বাচন করতে ব্যবহৃত হয়। এগুলি ব্যবহার করে আপনি ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে পারেন, যেমন top products, top customers, এবং sales ranking। সঠিকভাবে এই ফাংশনগুলি ব্যবহার করলে আপনি Power BI এবং Excel-এ আরও কার্যকরী এবং দ্রুত বিশ্লেষণ করতে সক্ষম হবেন।

Content added By

Dynamic Ranking এবং Filtering Techniques

270

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 নিয়ন্ত্রণ করতে সহায়ক, যা ডেটার বিশ্লেষণ আরও শক্তিশালী করে তোলে।

Content added By

Dynamic Segmentation এবং Binning Techniques

318

DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং রিপোর্ট তৈরির জন্য। Dynamic Segmentation এবং Binning Techniques ডেটাকে বিভিন্ন বিভাগে ভাগ করতে সাহায্য করে, যা ব্যবসায়িক বিশ্লেষণ এবং রিপোর্টিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।

Dynamic Segmentation এবং Binning কৌশলগুলি ডেটাকে নির্দিষ্ট শর্ত অনুযায়ী সেগমেন্টে বিভক্ত করতে ব্যবহৃত হয়, যেমন customer segmentation, sales performance grouping, এবং age group classification ইত্যাদি। DAX-এ এগুলি করার জন্য কিছু শক্তিশালী ফাংশন রয়েছে, যেমন LOOKUPVALUE, SWITCH, IF, এবং GROUPBY

এই প্রবন্ধে, আমরা Dynamic Segmentation এবং Binning Techniques সম্পর্কে আলোচনা করব এবং দেখব কিভাবে DAX ফাংশনগুলি ব্যবহার করে এই কৌশলগুলি প্রয়োগ করা যায়।


১. Dynamic Segmentation

Dynamic Segmentation একটি কৌশল যার মাধ্যমে ডেটাকে বিভিন্ন গ্রুপে বা সেগমেন্টে ভাগ করা হয় যেগুলির মধ্যে বিভিন্ন বৈশিষ্ট্য বা শর্ত রয়েছে। DAX ফাংশনগুলি ব্যবহার করে আপনি sales performance, customer segmentation, এবং market categorization ইত্যাদি গ্রুপিং তৈরি করতে পারেন। SWITCH, IF, এবং LOOKUPVALUE ফাংশনগুলি ব্যবহার করে আপনি ডেটাকে ডাইনামিকভাবে বিভক্ত করতে পারেন।

SWITCH ফাংশন

SWITCH ফাংশনটি একটি এক্সপ্রেশন বা মানের উপর ভিত্তি করে একাধিক শর্ত পরীক্ষা করে এবং প্রথম সত্য শর্তের জন্য একটি মান প্রদান করে।

Syntax:
SWITCH(<expression>, <value1>, <result1>, <value2>, <result2>, ..., <else_result>)
  • : যে এক্সপ্রেশন বা মানের উপর ভিত্তি করে শর্তগুলি পরীক্ষা হবে।
  • , , ...: যে মানগুলির জন্য আপনি শর্ত চেক করতে চান।
  • , , ...: যদি শর্ত পূর্ণ হয়, তবে ফলস্বরূপ প্রদান করা হবে।
  • <else_result>: যদি কোনো শর্ত পূর্ণ না হয়, তবে ডিফল্ট ফলাফল প্রদান করা হবে।
ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের SalesAmount অনুযায়ী Performance গ্রুপ করতে চান। আপনি SWITCH ফাংশন ব্যবহার করতে পারেন:

Sales Performance = SWITCH(
    TRUE(),
    Sales[SalesAmount] > 5000, "High",
    Sales[SalesAmount] > 1000, "Medium",
    "Low"
)

এখানে:

  • SWITCH ফাংশনটি SalesAmount এর উপর ভিত্তি করে তিনটি গ্রুপ তৈরি করবে: "High", "Medium", এবং "Low"।

Dynamic Customer Segmentation with LOOKUPVALUE

LOOKUPVALUE ফাংশনটি অন্য টেবিলের একটি মান খুঁজে পেতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি একাধিক টেবিলের মধ্যে সম্পর্কিত ডেটা বিশ্লেষণ করতে পারেন।

Syntax:
LOOKUPVALUE(<result_column>, <search_column>, <search_value>)
ব্যবহার:

ধরা যাক, আপনার একটি Customers টেবিল রয়েছে এবং আপনি Sales টেবিলের CustomerID অনুযায়ী গ্রাহকের Segment খুঁজে বের করতে চান:

Customer Segment = LOOKUPVALUE(Customers[Segment], Customers[CustomerID], Sales[CustomerID])

এখানে:

  • LOOKUPVALUE ফাংশনটি Sales টেবিলের CustomerID এর সাথে Customers টেবিলের Segment কলাম খুঁজে বের করবে এবং সম্পর্কিত Segment ফেরত দিবে।

২. Binning Techniques

Binning হল একটি পদ্ধতি যা নির্দিষ্ট মানের একটি গ্রুপ তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত ডেটা বিশ্লেষণের জন্য categories বা ranges তৈরি করতে ব্যবহৃত হয়। DAX-এ binning করার জন্য আপনি SWITCH, IF, এবং GROUPBY ফাংশন ব্যবহার করতে পারেন।

Binning with SWITCH and IF

SWITCH এবং IF ফাংশন ব্যবহার করে আপনি নির্দিষ্ট মানের উপর ভিত্তি করে বাইন বা গ্রুপ তৈরি করতে পারেন।

Example 1: Age Group Binning using SWITCH

ধরা যাক, আপনার Customers টেবিলের Age কলাম রয়েছে এবং আপনি এটি বিভিন্ন Age Group (যেমন, "18-25", "26-35", "36-50", "50+")-এ ভাগ করতে চান:

Age Group = SWITCH(
    TRUE(),
    Customers[Age] <= 25, "18-25",
    Customers[Age] <= 35, "26-35",
    Customers[Age] <= 50, "36-50",
    "50+"
)

এখানে:

  • SWITCH ফাংশনটি Customers[Age] এর মানের উপর ভিত্তি করে Age Group তৈরি করবে।
Example 2: Sales Performance Binning using IF

আপনি যদি Sales টেবিলের Amount কলামের উপর ভিত্তি করে Sales Performance সেগমেন্ট করতে চান:

Sales Performance = IF(Sales[SalesAmount] > 10000, "Excellent", IF(Sales[SalesAmount] > 5000, "Good", "Needs Improvement"))

এখানে:

  • IF ফাংশনটি SalesAmount এর মানের উপর ভিত্তি করে Sales Performance গ্রুপ করবে।

৩. Dynamic Segmentation and Binning Best Practices

  1. Clear Criteria:
    • Segmentation এবং binning করার আগে নিশ্চিত করুন যে আপনার নির্দিষ্ট criteria বা শর্ত পরিষ্কার আছে। উদাহরণস্বরূপ, sales ranges, age groups, customer performance ইত্যাদি।
  2. Use Appropriate Data Types:
    • Binning এবং segmentation এর জন্য সঠিক ডেটা টাইপ ব্যবহার নিশ্চিত করুন। যেমন, numeric columns ব্যবহার করা হলে তা integer বা decimal টাইপের হতে হবে।
  3. Avoid Complex Nested Functions:
    • SWITCH এবং IF ফাংশনগুলির মধ্যে খুব জটিল নেস্টেড লজিক ব্যবহার না করার চেষ্টা করুন, কারণ এটি প্রক্রিয়াকে ধীর করে দিতে পারে। সহজ এবং পরিষ্কার লজিক ব্যবহার করুন।
  4. Use Variables for Efficiency:
    • অনেক সময় variables ব্যবহার করলে performance উন্নত হয় এবং আপনার কোড পরিষ্কার হয়। যেমন, SWITCH এবং IF ফাংশনের মধ্যে মান একবার গাণিতিকভাবে হিসাব করে variable এ সংরক্ষণ করা যেতে পারে।

সারাংশ

Dynamic Segmentation এবং Binning Techniques DAX-এ অত্যন্ত গুরুত্বপূর্ণ কৌশল, যা ডেটাকে গ্রুপ বা সেগমেন্টে ভাগ করতে সাহায্য করে। SWITCH, IF, এবং LOOKUPVALUE ফাংশন ব্যবহার করে আপনি ডেটাকে দ্রুত বিভক্ত এবং গ্রুপ করতে পারেন। এই কৌশলগুলি customer segmentation, sales performance, age group classification এবং অন্যান্য business analysis প্রক্রিয়ায় ব্যবহৃত হয়। সঠিকভাবে এই কৌশলগুলি প্রয়োগ করলে আপনি ডেটার উপর কার্যকরী বিশ্লেষণ এবং রিপোর্ট তৈরি করতে পারবেন।

Content added By

Complex Business Metrics (KPIs, Ratios, Percentages) তৈরি

231

DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ব্যবহার করে আপনি complex business metrics তৈরি করতে পারেন, যেমন Key Performance Indicators (KPIs), Ratios, এবং Percentages, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য অত্যন্ত গুরুত্বপূর্ণ। এই ফাংশনগুলি ব্যবসায়িক পারফরম্যান্স ট্র্যাক করতে এবং বিশ্লেষণ করতে ব্যবহৃত হয়।

এই প্রবন্ধে, আমরা KPIs, Ratios, এবং Percentages তৈরি করার জন্য DAX এর কিছু গুরুত্বপূর্ণ কৌশল এবং ফাংশন নিয়ে আলোচনা করব।


১. KPIs (Key Performance Indicators) তৈরি করা

KPIs হল ব্যবসায়িক পারফরম্যান্স পরিমাপের জন্য নির্দিষ্ট মেট্রিক্স। এটি ব্যবসার গুরুত্বপূর্ণ লক্ষ্যের সাথে তুলনা করা হয়। KPIs তৈরি করতে, DAX ব্যবহার করে আপনি measure তৈরি করতে পারেন যা সঠিক ফলাফল ফিরিয়ে দেয় এবং সেই ফলাফলের ভিত্তিতে target বা goal এর সাথে তুলনা করা হয়।

KPI এর সাধারণ কাঠামো:

  1. Actual Value: বর্তমান মান।
  2. Target Value: লক্ষ্য বা লক্ষ্য মান।
  3. Status Indicator: এটি লক্ষ্য পূরণের অবস্থা বা ফলাফল নির্ধারণ করে (যেমন, রঙিন চিহ্ন - সফল বা ব্যর্থ)।

Example: Sales Performance KPI

ধরা যাক, আপনি একটি Sales KPI তৈরি করতে চান, যেখানে Actual Sales এবং Target Sales এর মধ্যে পার্থক্য বিশ্লেষণ করা হবে:

Sales Performance KPI = 
IF(
    SUM(Sales[Amount]) >= 500000, 
    "On Target", 
    "Below Target"
)

এখানে:

  • IF ফাংশনটি ব্যবহৃত হয়েছে, যেখানে Sales[Amount] যদি 500,000 এর সমান বা বেশি হয়, তবে এটি "On Target" রিটার্ন করবে, অন্যথায় "Below Target" রিটার্ন করবে।

KPI ফাংশন ব্যবহার:

আপনি Power BI-তে কাস্টম KPI ভিজ্যুয়াল তৈরি করতে এই DAX measure ব্যবহার করতে পারেন, যেখানে আপনি সহজেই KPI targets এবং actual values এর ভিত্তিতে পারফরম্যান্স বিশ্লেষণ করতে পারবেন।


২. Ratios তৈরি করা

Ratios সাধারণত দুটি মাপকাঠির মধ্যে সম্পর্ক নির্দেশ করে এবং ব্যবসায়িক পারফরম্যান্স এবং অর্থনৈতিক বিশ্লেষণের জন্য খুবই গুরুত্বপূর্ণ। DAX ব্যবহার করে আপনি বিভিন্ন ধরনের ratios তৈরি করতে পারেন, যেমন profit margin, return on investment (ROI) ইত্যাদি।

Example: Profit Margin Ratio

Profit Margin হল কোম্পানির লাভের পরিমাণের একটি পরিমাপ, যা Revenue এবং Profit এর সম্পর্ক। এটি হিসাব করা হয়:

Profit Margin = DIVIDE(SUM(Sales[Profit]), SUM(Sales[Revenue]))

এখানে:

  • DIVIDE ফাংশনটি দুটি মানের (যেমন Profit এবং Revenue) ভাগফল বের করতে ব্যবহৃত হয়। এটি এমনকি divide by zero এর সমস্যা থেকেও রক্ষা করে।

Real-World Use Case:

Profit Margin Ratio সাধারণত ব্যবহৃত হয় ব্যবসার লাভজনকতা মূল্যায়ন করতে। উচ্চ profit margin মানে কোম্পানি তার খরচের তুলনায় অধিক লাভ করছে।


৩. Percentages তৈরি করা

Percentage হল একটি অপরিহার্য মেট্রিক যা সাধারণত পারফরম্যান্স, বৃদ্ধির হার, বা বিশ্লেষণমূলক পরিসংখ্যান হিসাব করতে ব্যবহৃত হয়। DAX ব্যবহার করে আপনি percentage হিসাব করতে পারেন, যেমন Sales Growth Percentage বা Return Percentage

Example: Sales Growth Percentage

Sales Growth হল একটি মেট্রিক যা বছরের তুলনায় বিক্রয়ের বৃদ্ধি পরিমাপ করে। এটি হিসাব করা হয়:

Sales Growth Percentage = 
DIVIDE(
    SUM(Sales[Amount]) - SUM(Sales[Amount LY]), 
    SUM(Sales[Amount LY]), 
    0
)

এখানে:

  • SUM(Sales[Amount]) বর্তমান বছরের বিক্রয় পরিমাণ।
  • SUM(Sales[Amount LY]) গত বছরের বিক্রয় পরিমাণ।
  • DIVIDE ফাংশনটি দুটি সংখ্যার পার্থক্যকে গত বছরের বিক্রয়ের পরিমাণ দ্বারা ভাগ করে percentage growth বের করে।

Real-World Use Case:

Sales Growth Percentage কোম্পানির বিক্রয়ের বৃদ্ধির হার পরিমাপ করতে ব্যবহৃত হয়। যদি এটি 20% হয়, তবে তার মানে গত বছরের তুলনায় 20% বেশি বিক্রয় হয়েছে।


৪. Dynamic Target Achievement Percentage

আপনি যদি dynamic percentage ক্যালকুলেশন তৈরি করতে চান, যেমন target achievement percentage, যেখানে আপনি লক্ষ্য এবং বাস্তব ফলাফল ভিত্তিক ক্যালকুলেশন করবেন:

Example: Target Achievement Percentage

Target Achievement = 
DIVIDE(
    SUM(Sales[Amount]),
    [Target Sales], 
    0
)

এখানে:

  • [Target Sales] হলো নির্ধারিত লক্ষ্য বিক্রয়, যা আপনি একটি আলাদা measure বা স্ট্যাটিক মান হিসেবে নির্ধারণ করতে পারেন।

এটি Sales টেবিলের Amount এর মোট যোগফলকে লক্ষ্য বিক্রয়ের পরিমাণ দ্বারা ভাগ করে target achievement percentage নির্ধারণ করবে।


৫. Performance Thresholds with KPIs

KPI তৈরি করতে, আপনি thresholds ব্যবহার করে পারফরম্যান্স মূল্যায়ন করতে পারেন, যেমন Above Target, On Target, বা Below Target

Example: Performance Indicator Using Thresholds

Performance Indicator = 
SWITCH(
    TRUE(),
    [Target Achievement] >= 1, "Above Target",
    [Target Achievement] = 1, "On Target",
    [Target Achievement] < 1, "Below Target"
)

এখানে:

  • SWITCH ফাংশনটি ব্যবহার করা হয়েছে যাতে Target Achievement এর মান অনুযায়ী ফলাফল নির্ধারণ করা হয়।

এই ফাংশনটি ব্যবহার করে আপনি Power BI ড্যাশবোর্ডে বিভিন্ন রঙের KPI দেখাতে পারেন, যেমন:

  • Green: "Above Target"
  • Yellow: "On Target"
  • Red: "Below Target"

৬. Best Practices for KPI, Ratios, and Percentages in DAX

  1. Use DIVIDE for Safe Division: DIVIDE ফাংশন ব্যবহার করুন, যা ভাগফল নির্ধারণ করার সময় divide by zero সমস্যা থেকে মুক্তি দেয়।
  2. Avoid Hardcoding Values: Hardcoded values (যেমন, স্ট্যাটিক টার্গেট বা মান) এড়িয়ে চলুন এবং পরিবর্তনশীল parameters বা measures ব্যবহার করুন।
  3. Leverage Variables: যখন একই ক্যালকুলেশন বা এক্সপ্রেশন বারবার ব্যবহৃত হয়, তখন variables ব্যবহার করুন যাতে কোড ক্লিন এবং পারফরম্যান্স ভালো হয়।
  4. Validate Metrics Regularly: নিশ্চিত করুন যে আপনার KPI এবং ratios সঠিকভাবে গণনা হচ্ছে এবং এগুলোর লক্ষ্য সঠিকভাবে সেট করা হয়েছে।

সারাংশ

KPIs, Ratios, এবং Percentages হল ব্যবসায়িক পরিসংখ্যান এবং বিশ্লেষণের গুরুত্বপূর্ণ অংশ। DAX ব্যবহার করে আপনি শক্তিশালী KPIs তৈরি করতে পারেন, যেমন Sales Performance, Profit Margin, এবং Target Achievement ইত্যাদি। এছাড়া Ratios এবং Percentages বিশ্লেষণের জন্য Sales Growth এবং Profitability Analysis সহ গুরুত্বপূর্ণ মেট্রিক্স তৈরি করা যেতে পারে। DAX ফাংশনগুলি ব্যবহারের মাধ্যমে ব্যবসায়িক তথ্য বিশ্লেষণ সহজ এবং দ্রুততর হয়, যা Power BI বা Excel-এ গুরুত্বপূর্ণ রিপোর্ট এবং ড্যাশবোর্ড তৈরি করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...