Aggregation এবং Iteration Functions গাইড ও নোট

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

DAX (Data Analysis Expressions) হল একটি এক্সপ্রেশন ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX এর সাহায্যে আপনি data analysis এবং business intelligence কাজ সহজে করতে পারেন, যেমন কাস্টম ক্যালকুলেশন তৈরি করা, aggregation, iteration এবং filtering

এই প্রবন্ধে, আমরা Aggregation Functions এবং Iteration Functions এর ব্যবহার এবং পার্থক্য নিয়ে আলোচনা করব। এগুলি ডেটা বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ এবং SUM, AVERAGE, COUNT, SUMX, AVERAGEX, FILTER ইত্যাদি ফাংশনের মাধ্যমে দ্রুত এবং কার্যকরী বিশ্লেষণ করতে সাহায্য করে।


১. Aggregation Functions

Aggregation Functions ব্যবহার করে আপনি একটি কলামের বা টেবিলের বিভিন্ন মানের উপর পরিসংখ্যানমূলক গণনা করতে পারেন, যেমন sum, average, count, min, max, ইত্যাদি। এই ফাংশনগুলির মাধ্যমে আপনি ডেটার উপর summary calculations তৈরি করতে পারেন।

Common Aggregation Functions in DAX

  1. SUM: একটি কলামের সমস্ত মানের যোগফল বের করে।

    Total Sales = SUM(Sales[Amount])
    

    এই ফাংশনটি Sales টেবিলের Amount কলামের মোট বিক্রয় পরিমাণ যোগ করবে।

  2. AVERAGE: একটি কলামের গড় মান বের করে।

    Average Sales = AVERAGE(Sales[Amount])
    

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

  3. COUNT: একটি কলামে মানের সংখ্যা গণনা করে (নাল ছাড়া)।

    Count Sales = COUNT(Sales[Amount])
    

    এটি Sales টেবিলের Amount কলামের নির্দিষ্ট সংখ্যক মান গণনা করবে, যেখানে নাল মানগুলি বাদ দেওয়া হবে।

  4. MIN: একটি কলামের সর্বনিম্ন মান বের করে।

    Min Sale = MIN(Sales[Amount])
    

    এটি Sales টেবিলের Amount কলামের সর্বনিম্ন বিক্রয় পরিমাণ বের করবে।

  5. MAX: একটি কলামের সর্বোচ্চ মান বের করে।

    Max Sale = MAX(Sales[Amount])
    

    এটি Sales টেবিলের Amount কলামের সর্বোচ্চ বিক্রয় পরিমাণ বের করবে।

  6. DISTINCTCOUNT: একটি কলামে ইউনিক (distinct) মানের সংখ্যা বের করে।

    Distinct Product Count = DISTINCTCOUNT(Sales[ProductID])
    

    এটি Sales টেবিলের ProductID কলামের ইউনিক পণ্য সংখ্যা বের করবে।


২. Iteration Functions

Iteration Functions বা Iterators হল ফাংশনগুলির একটি গ্রুপ যা একটি টেবিলের সারি বা রো-বাই-রো ভিত্তিতে ক্যালকুলেশন করে। এগুলি ডেটার উপর কাজ করার সময় row context তৈরি করে এবং প্রতিটি সারির জন্য গণনা করে ফলাফল প্রদান করে। SUMX, AVERAGEX, MINX, MAXX এই ধরনের ফাংশনগুলির উদাহরণ।

Common Iteration Functions in DAX

  1. SUMX: একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক যোগফল বের করে।

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

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

  2. AVERAGEX: একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক গড় মান বের করে।

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

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

  3. MINX: একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক সর্বনিম্ন মান বের করে।

    Min Sale = MINX(Sales, Sales[Quantity] * Sales[UnitPrice])
    

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

  4. MAXX: একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক সর্বোচ্চ মান বের করে।

    Max Sale = MAXX(Sales, Sales[Quantity] * Sales[UnitPrice])
    

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

  5. COUNTX: একটি এক্সপ্রেশন বা টেবিলের উপর সারি ভিত্তিক মানের সংখ্যা গণনা করে।

    Count Sale = COUNTX(Sales, Sales[Quantity] * Sales[UnitPrice])
    

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


৩. Aggregation Functions এবং Iteration Functions এর মধ্যে পার্থক্য

ফিচারAggregation FunctionsIteration Functions
কাজএকটি কলামের উপর সার্বিক ক্যালকুলেশন (যেমন যোগফল, গড়, সংখ্যা)।একটি টেবিলের প্রতিটি সারি থেকে ডেটা নিয়ে কাস্টম ক্যালকুলেশন।
Row Contextসাধারণত filter context ব্যবহার করে।প্রতিটি সারির জন্য row context তৈরি করে।
উদাহরণSUM, AVERAGE, MIN, MAX, COUNTSUMX, AVERAGEX, MINX, MAXX, COUNTX
প্রধান উদ্দেশ্যএকটি কলামের উপর মোট বা গড় মান বের করা।একটি টেবিলের প্রতিটি সারির উপর গণনা করে সেগুলির উপর ভিত্তি করে পরিসংখ্যান বের করা।

৪. Best Practices for Using Aggregation and Iteration Functions

  1. Aggregation functions দ্রুত এবং দক্ষ, তবে এগুলি কেবল column-based calculations এর জন্য উপযুক্ত। যখন আপনি কলামের উপর পরিসংখ্যান করতে চান, তখন SUM, AVERAGE, MIN, MAX ব্যবহার করুন।
  2. Iteration functions ব্যবহার করার সময় row context তৈরি হয়, তাই নিশ্চিত করুন যে সঠিক ফিল্টার এবং ক্যালকুলেশন করা হচ্ছে। এটি কম্প্লেক্স ক্যালকুলেশন এবং custom calculations এর জন্য উপকারী।
  3. Performance Consideration: যখন ডেটার পরিমাণ বেশি হয়, তখন Iteration functions কিছুটা ধীর হতে পারে, কারণ এটি প্রতিটি সারির উপর ক্যালকুলেশন করে। তাই বড় ডেটাসেটের জন্য Aggregation functions ব্যবহার করা উপযুক্ত।

সারাংশ

Aggregation Functions এবং Iteration Functions DAX-এ অত্যন্ত গুরুত্বপূর্ণ দুটি ফাংশন যা ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য ব্যবহৃত হয়। Aggregation functions কলামের উপর ভিত্তি করে সাধারণ ক্যালকুলেশন তৈরি করে, যেমন SUM, AVERAGE, MIN, MAX, ইত্যাদি, যখন Iteration functions টেবিলের প্রতিটি সারির উপর কাজ করে, যেমন SUMX, AVERAGEX, MINX, MAXX ইত্যাদি। এই ফাংশনগুলি সঠিকভাবে ব্যবহার করলে আপনি জটিল বিশ্লেষণ এবং কার্যকরী কাস্টম ক্যালকুলেশন তৈরি করতে পারবেন।

Content added By

Aggregation Functions (SUM, AVERAGE, COUNT) এর ব্যবহার

354

DAX (Data Analysis Expressions) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। Aggregation Functions হল DAX-এর অন্যতম গুরুত্বপূর্ণ ফাংশন, যা ডেটা গোষ্ঠীভুক্ত (aggregated) ক্যালকুলেশন তৈরি করতে ব্যবহৃত হয়। এই ফাংশনগুলির মধ্যে SUM, AVERAGE, এবং COUNT সবচেয়ে সাধারণ এবং মৌলিক ফাংশন।

এই প্রবন্ধে আমরা SUM, AVERAGE, এবং COUNT ফাংশনগুলির ব্যবহার, তাদের সঠিক প্রয়োগ, এবং real-world use cases নিয়ে আলোচনা করব।


১. SUM ফাংশন

SUM ফাংশনটি একটি কলামের সমস্ত মানের যোগফল বের করতে ব্যবহৃত হয়। এটি সবচেয়ে মৌলিক এবং সাধারণ aggregation function

Syntax:

SUM(<column>)
  • : যে কলামের মানগুলোর যোগফল আপনি বের করতে চান।

ব্যবহার:

ধরা যাক, আপনার Sales টেবিল রয়েছে এবং আপনি SalesAmount কলামের মোট বিক্রয় পরিমাণ বের করতে চান। আপনি এই ফাংশনটি ব্যবহার করবেন:

Total Sales = SUM(Sales[SalesAmount])

এটি Sales টেবিলের SalesAmount কলামের সমস্ত মান যোগ করবে এবং মোট বিক্রয় পরিমাণ বের করবে।

Real-World Use Case:

ধরা যাক, আপনি একটি KPI (Key Performance Indicator) তৈরি করতে চান, যেখানে মোট বিক্রয় পরিমাণ জানাতে হবে। আপনি SUM ফাংশন ব্যবহার করে সারা বছরের SalesAmount এর মোট যোগফল বের করতে পারেন।


২. AVERAGE ফাংশন

AVERAGE ফাংশনটি একটি কলামের গড় মান বের করতে ব্যবহৃত হয়। এটি সাধারণত ব্যবহৃত হয় যখন আপনি ডেটার গড় মান নির্ধারণ করতে চান, যেমন গড় বিক্রয়, গড় লাভ ইত্যাদি।

Syntax:

AVERAGE(<column>)
  • : যে কলামের গড় মান আপনি বের করতে চান।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের SalesAmount কলামের গড় বিক্রয় পরিমাণ বের করতে চান, তাহলে আপনি এই ফাংশনটি ব্যবহার করবেন:

Average Sales = AVERAGE(Sales[SalesAmount])

এটি Sales টেবিলের SalesAmount কলামের গড় মান বের করবে।

Real-World Use Case:

Average Sales ক্যালকুলেশনটি ব্যবহৃত হতে পারে যখন আপনি জানাতে চান যে মাসের প্রতি বিক্রয়ের গড় পরিমাণ কত ছিল। এটি ব্যবসায়িক পরিকল্পনা এবং ভবিষ্যদ্বাণী তৈরি করতে সাহায্য করে।


৩. COUNT ফাংশন

COUNT ফাংশনটি একটি কলামে কতটি সংখ্যামূলক মান রয়েছে তা গণনা করে। এটি সাধারণত ব্যবহৃত হয় যখন আপনি কোনো কলামে non-blank সেল (যে সেলে কিছু না কিছু মান আছে) গুনতে চান।

Syntax:

COUNT(<column>)
  • : যে কলামে সেল সংখ্যা আপনি গুনতে চান।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের SalesAmount কলামে কতটি non-blank মান রয়েছে তা গণনা করতে চান:

Count of Sales = COUNT(Sales[SalesAmount])

এটি Sales টেবিলের SalesAmount কলামের non-blank সেল সংখ্যা গণনা করবে।

Real-World Use Case:

আপনি Customer টেবিলের মধ্যে কতটি গ্রাহক সেলফ-সার্ভিস রেজিস্ট্রেশন করেছেন, তা দেখতে COUNT ফাংশন ব্যবহার করতে পারেন।


৪. Other Related Aggregation Functions

DAX-এর অন্যান্য aggregation functions-এর মধ্যে কিছু খুবই গুরুত্বপূর্ণ ফাংশন রয়েছে, যেমন:

COUNTBLANK:

এটি একটি কলামের blank সেল সংখ্যা গণনা করতে ব্যবহৃত হয়।

Blank Count = COUNTBLANK(Sales[SalesAmount])

COUNTA:

এটি একটি কলামে মোট সেল সংখ্যা (যতগুলো সেলই পূর্ণ বা খালি) গুনে দেয়।

Total Entries = COUNTA(Sales[SalesAmount])

DISTINCTCOUNT:

এটি একটি কলামে distinct মানের সংখ্যা গণনা করতে ব্যবহৃত হয়, অর্থাৎ যেগুলোর মধ্যে পুনরাবৃত্তি নেই।

Unique Products = DISTINCTCOUNT(Sales[ProductID])

MAX:

এটি একটি কলামে সর্বোচ্চ মান বের করতে ব্যবহৃত হয়।

Max Sales = MAX(Sales[SalesAmount])

MIN:

এটি একটি কলামে সর্বনিম্ন মান বের করতে ব্যবহৃত হয়।

Min Sales = MIN(Sales[SalesAmount])

৫. Aggregation Functions and Performance

যখন আপনি aggregation functions ব্যবহার করেন, সঠিকভাবে ডেটার পরিমাণ এবং প্রক্রিয়া নিশ্চিত করা খুবই গুরুত্বপূর্ণ। যদি আপনার ডেটাসেট খুব বড় হয় এবং আপনি অনেক aggregation করতে চান, তবে পারফরম্যান্স কিছুটা ধীর হতে পারে। তবে কিছু পারফরম্যান্স টিপস রয়েছে যা আপনার DAX ক্যালকুলেশনগুলিকে দ্রুত করতে সাহায্য করবে:

  1. Use Calculated Columns for Repetitive Aggregations: যদি একই এক্সপ্রেশন বারবার ব্যবহৃত হয়, তবে এটি একটি calculated column হিসেবে সংরক্ষণ করা উচিৎ।
  2. Avoid Complex Aggregations in Real-Time Reports: রিয়েল-টাইম রিপোর্টে complex aggregations বেশি ব্যবহার না করার চেষ্টা করুন।
  3. Use Filters Wisely: FILTER এবং ALL ফাংশনগুলি অতিরিক্ত ব্যবহার করা থেকে বিরত থাকুন, কারণ এগুলি পারফরম্যান্সে প্রভাব ফেলতে পারে।
  4. Summarize Data Before Aggregation: ডেটা summarize করার মাধ্যমে, আপনি কেবলমাত্র প্রাসঙ্গিক ডেটার উপর কাজ করতে পারবেন, যা আপনার ক্যালকুলেশনগুলোকে দ্রুততর করে।

সারাংশ

SUM, AVERAGE, এবং COUNT হল DAX এর মৌলিক aggregation functions যা ডেটার উপর ক্যালকুলেশন তৈরি করার জন্য ব্যবহৃত হয়। এগুলি Power BI, Power Pivot, এবং SSAS-এ ব্যবহৃত বিশ্লেষণাত্মক রিপোর্ট এবং কাস্টম ক্যালকুলেশনের জন্য অত্যন্ত কার্যকরী। এই ফাংশনগুলি ব্যবহারের মাধ্যমে আপনি বিক্রয়, গড় মান, সেল সংখ্যা, সর্বোচ্চ এবং সর্বনিম্ন মান ইত্যাদি বিশ্লেষণ করতে পারেন, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণে সহায়ক।

Content added By

Iteration Functions (SUMX, AVERAGEX, COUNTX)

256

DAX (Data Analysis Expressions) হলো একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। Iteration Functions হল DAX-এর একটি বিশেষ ফাংশন গ্রুপ যা row-by-row calculation করে এবং প্রতিটি রো বা সারির জন্য একটি ক্যালকুলেশন করে। এই ফাংশনগুলি সাধারণত table expressions বা calculated columns এবং measures তৈরির জন্য ব্যবহৃত হয়।

এই প্রবন্ধে, আমরা SUMX, AVERAGEX, এবং COUNTX ফাংশনগুলির বিস্তারিত আলোচনা করব এবং কিভাবে এগুলি iteration এবং row-based calculations এর জন্য ব্যবহার করা হয়, তা দেখাব।


১. SUMX ফাংশন

SUMX একটি iteration function যা একটি টেবিল বা এক্সপ্রেশনটির প্রতিটি সারির জন্য গণনা করে এবং তারপরে সেগুলির যোগফল বের করে। এটি শুধুমাত্র তখন ব্যবহৃত হয় যখন আপনি একটি টেবিল বা এক্সপ্রেশন থেকে row-by-row ক্যালকুলেশন করতে চান।

Syntax:

SUMX(<table>, <expression>)
  • : এটি সেই টেবিল বা এক্সপ্রেশন যার উপর সারি ভিত্তিক ক্যালকুলেশন করা হবে।
  • : এটি সেই ক্যালকুলেশন যা প্রতিটি সারির জন্য করা হবে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের জন্য প্রতিটি Quantity এবং Price এর গুণফল বের করতে চান এবং তারপর তাদের যোগফল বের করতে চান:

Total Sales = SUMX(Sales, Sales[Quantity] * Sales[Price])

এখানে:

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

Real-World Application:

এটি ব্যবহৃত হতে পারে যখন আপনি কোনো পণ্যের sales value গণনা করতে চান যা Quantity এবং Price এর উপর ভিত্তি করে। এই ধরনের ক্যালকুলেশন business analytics এবং financial analysis এর জন্য গুরুত্বপূর্ণ।


২. AVERAGEX ফাংশন

AVERAGEX ফাংশনটি iteration function যা একটি টেবিল বা এক্সপ্রেশন থেকে প্রতিটি সারির জন্য একটি মান বের করে এবং তারপরে তাদের গড় মান (average) হিসাব করে। এটি সাধারণত যখন আপনি row-by-row calculation এর মাধ্যমে একটি average value বের করতে চান তখন ব্যবহৃত হয়।

Syntax:

AVERAGEX(<table>, <expression>)
  • : এটি সেই টেবিল বা এক্সপ্রেশন যার উপর সারি ভিত্তিক ক্যালকুলেশন করা হবে।
  • : এটি সেই ক্যালকুলেশন যা প্রতিটি সারির জন্য করা হবে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিল থেকে TotalSales (যেখানে TotalSales হলো Quantity × Price) এর গড় মান বের করতে চান:

Average Sales = AVERAGEX(Sales, Sales[Quantity] * Sales[Price])

এখানে:

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

Real-World Application:

AVERAGEX ফাংশনটি ব্যবহৃত হয় যখন আপনি একটি নির্দিষ্ট metric (যেমন, বিক্রয়ের পরিমাণ বা লাভ) এর গড় হিসাব করতে চান, বিশেষ করে যখন আপনি row-by-row calculation করতে চান।


৩. COUNTX ফাংশন

COUNTX ফাংশনটি iteration function যা একটি টেবিল বা এক্সপ্রেশন থেকে সারি ভিত্তিক গণনা করে এবং শর্ত পূর্ণ করা সারিগুলির সংখ্যা গননা করে। এটি সাধারণত ব্যবহার করা হয় যখন আপনি কোনো নির্দিষ্ট শর্ত অনুযায়ী সারি গণনা করতে চান।

Syntax:

COUNTX(<table>, <expression>)
  • : এটি সেই টেবিল বা এক্সপ্রেশন যার উপর সারি ভিত্তিক গণনা করা হবে।
  • : এটি সেই ক্যালকুলেশন যা শর্তে পরীক্ষা করা হবে। এই মানটি TRUE হলে গোনা হবে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের মধ্যে এমন সারিগুলির সংখ্যা গননা করতে চান, যেখানে SalesAmount 1000 এর বেশি:

Count High Sales = COUNTX(Sales, IF(Sales[SalesAmount] > 1000, 1, 0))

এখানে:

  • COUNTX ফাংশনটি Sales টেবিলের প্রতিটি সারির জন্য SalesAmount শর্ত পরীক্ষা করবে।
  • যদি SalesAmount 1000 এর বেশি হয়, তবে এটি 1 ফিরিয়ে দেবে এবং COUNTX এই মানগুলির সংখ্যা গননা করবে।

Real-World Application:

এটি ব্যবহার করা যেতে পারে যেখানে আপনি একটি নির্দিষ্ট শর্ত (যেমন, বিক্রয় পরিমাণ) পূর্ণ করা সারির সংখ্যা দেখতে চান। উদাহরণস্বরূপ, আপনি সব পণ্য বা অঞ্চলের মধ্যে high sales গুলো গণনা করতে পারেন।


৪. Iteration Functions: Differences and Use Cases

FunctionDescriptionUse Case
SUMXসারি ভিত্তিক গণনা করে, তারপর তাদের যোগফল বের করে।একাধিক কলামের মান গুণফল বা যোগফল বের করার জন্য ব্যবহৃত।
AVERAGEXসারি ভিত্তিক গণনা করে, তারপর তাদের গড় বের করে।একটি টেবিল বা এক্সপ্রেশন থেকে গড় মান বের করার জন্য ব্যবহৃত।
COUNTXসারি ভিত্তিক গণনা করে, শর্ত পূর্ণ করা সারির সংখ্যা গননা করে।একটি নির্দিষ্ট শর্ত পূর্ণ করা সারির সংখ্যা গননা করার জন্য ব্যবহৃত।

৫. Performance Considerations for Iteration Functions

Iteration Functions (যেমন SUMX, AVERAGEX, COUNTX) ব্যবহার করার সময় কিছু পারফরম্যান্স সতর্কতা অবলম্বন করা প্রয়োজন:

  1. Large Datasets: বড় ডেটাসেটে iteration functions ব্যবহার করার সময় পারফরম্যান্সে সমস্যা হতে পারে, কারণ এটি প্রতিটি সারি আলাদাভাবে প্রক্রিয়া করে। সুতরাং, যখন সম্ভব হয়, কমপ্লেক্স calculated columns বা measures তৈরি করার জন্য এগুলি ব্যবহার করুন।
  2. Simplifying Expressions: Iteration functions এর মধ্যে যদি কমপ্লেক্স এক্সপ্রেশন থাকে, তবে তা সরলীকরণ করা উচিত, যাতে ফাংশনগুলি দ্রুত কার্যকরী হয়।
  3. Using Variables: Variables ব্যবহার করলে আপনার এক্সপ্রেশনগুলিকে আরও দ্রুত এবং কার্যকরী করা যায়, কারণ এটি একাধিক বার একই গণনা করতে বাধা দেয়।

সারাংশ

SUMX, AVERAGEX, এবং COUNTX হল DAX এর iteration functions, যা row-by-row calculations করতে ব্যবহৃত হয় এবং একটি টেবিল বা এক্সপ্রেশন থেকে যোগফল, গড় বা শর্ত পূর্ণ করা সারির সংখ্যা বের করতে সহায়ক। এই ফাংশনগুলি ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনাকে conditional calculations বা aggregations করতে হয়। Performance optimization এবং simplifying expressions করার মাধ্যমে এই ফাংশনগুলির কার্যক্ষমতা বৃদ্ধি করা যায়, যা Power BI এবং Excel-এ দ্রুত বিশ্লেষণ এবং রিপোর্ট তৈরি করতে সাহায্য করে।

Content added By

Row Context এবং Filter Context এর মধ্যে পার্থক্য

266

DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। Row Context এবং Filter Context হল দুটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট যা DAX expressions এর মধ্যে কার্যকরীভাবে কাজ করার জন্য প্রয়োজনীয়। Row Context এবং Filter Context ডেটার ক্যালকুলেশন এবং বিশ্লেষণ প্রক্রিয়ার গুরুত্বপূর্ণ অংশ। এই দুটি কনসেপ্ট একে অপরের সাথে সম্পর্কিত, তবে তাদের কার্যকারিতা এবং প্রভাব ভিন্ন।

এই প্রবন্ধে আমরা Row Context এবং Filter Context এর মধ্যে পার্থক্য এবং তাদের ব্যবহারের সঠিক পদ্ধতি নিয়ে আলোচনা করব।


১. Row Context

Row Context হল একটি DAX calculation context যেখানে প্রতিটি সারির জন্য আলাদা গণনা করা হয়। Row Context তখন তৈরি হয় যখন আপনি calculated column তৈরি করেন বা iterators (যেমন SUMX, AVERAGEX, ইত্যাদি) ব্যবহার করেন। এর মধ্যে, DAX প্রতিটি row বা record অনুযায়ী গণনা করে এবং প্রতিটি সারির জন্য আলাদা calculation সম্পন্ন হয়।

Row Context এর উদাহরণ:

ধরা যাক, আপনার Sales টেবিল রয়েছে এবং আপনি একটি নতুন calculated column তৈরি করতে চান, যা Amount এবং Discount এর পার্থক্য বের করবে:

FinalPrice = Sales[Amount] - Sales[Discount]

এখানে, Row Context তৈরি হয় কারণ DAX প্রতিটি Sales টেবিলের সারির জন্য Amount এবং Discount কলামের মানের পার্থক্য গণনা করছে। প্রতিটি সারি বা রো-এ আলাদা ক্যালকুলেশন হবে এবং তাদের জন্য একটি FinalPrice তৈরি হবে।

Row Context-এ ব্যবহৃত DAX Functions:

  • SUMX
  • AVERAGEX
  • COUNTX
  • MINX
  • MAXX

এই ফাংশনগুলি iterators হিসেবে কাজ করে এবং row-by-row calculation সম্পাদন করে।


২. Filter Context

Filter Context হল DAX এর একটি গুরুত্বপূর্ণ কনসেপ্ট যা একটি ক্যালকুলেশনে কোন ডেটা অন্তর্ভুক্ত হবে এবং কোন ডেটা বাদ যাবে, তা নির্ধারণ করে। এটি সাধারণত CALCULATE, FILTER, ALL, এবং অন্যান্য filter functions দ্বারা নিয়ন্ত্রিত হয়। Filter Context বিভিন্ন filters যেমন Slicers, Columns, বা Visual Filters দ্বারা পরিচালিত হয় এবং এটি ডেটা ক্যালকুলেশনের জন্য context তৈরি করে।

Filter Context এর উদাহরণ:

ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান, কিন্তু শুধুমাত্র Region "East"-এ:

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

এখানে:

  • CALCULATE ফাংশনটি SUM(Sales[Amount]) ক্যালকুলেশন করবে, কিন্তু Sales[Region] = "East" শর্তটি filter context তৈরি করবে।
  • এই ফিল্টারটি শুধুমাত্র Region "East"-এর জন্য Amount এর যোগফল বের করবে।

Filter Context-এ ব্যবহৃত DAX Functions:

  • CALCULATE
  • FILTER
  • ALL
  • ALLSELECTED
  • USERELATIONSHIP

এই ফাংশনগুলি filter context তৈরি করে এবং ডেটার উপর শর্ত প্রয়োগ করে।


৩. Row Context এবং Filter Context এর মধ্যে পার্থক্য

বৈশিষ্ট্যRow ContextFilter Context
সংজ্ঞাপ্রতিটি সারির জন্য আলাদা ক্যালকুলেশন করা হয়।নির্দিষ্ট শর্ত বা ফিল্টারের মাধ্যমে ডেটার সেট নির্বাচন করা হয়।
কিভাবে কাজ করেএটি iterators এবং calculated columns এর মাধ্যমে কাজ করে।এটি CALCULATE, FILTER এবং অন্যান্য filter functions এর মাধ্যমে কাজ করে।
ডেটার প্রভাবসারির প্রতিটি মান আলাদাভাবে গণনা করা হয়।ডেটার কোন অংশ ব্যবহার করা হবে তা filter এর মাধ্যমে নির্ধারিত হয়।
উদাহরণSUMX, AVERAGEX ফাংশনগুলি row context তৈরি করে।CALCULATE, FILTER ফাংশনগুলি filter context তৈরি করে।
প্রধান ব্যবহারcalculated columns এবং iterative calculationsmeasure calculation এবং filtering ডেটার উপরে কাজ করার জন্য।
Context TypeRow-based calculationFilter-based aggregation

৪. Row Context এবং Filter Context একসাথে ব্যবহার

Row Context এবং Filter Context একসাথে ব্যবহৃত হয় যখন আপনি একটি measure বা calculated column তৈরি করেন, যেখানে row context ব্যবহার করে প্রতিটি সারি গণনা করা হয় এবং filter context প্রয়োগ করে ফিল্টার করা হয়।

Example:

ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান, কিন্তু Region "East"-এ এবং Product "A"-এ বিক্রয়ের জন্য:

Total Sales East Product A = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East", Sales[Product] = "A")

এখানে:

  • Row Context তৈরি হচ্ছে SUM ফাংশনের মাধ্যমে, যা Sales[Amount] এর যোগফল গণনা করবে।
  • Filter Context তৈরি হচ্ছে Sales[Region] = "East" এবং Sales[Product] = "A" শর্তগুলি প্রয়োগ করার মাধ্যমে।

এটি শুধুমাত্র সেই Sales রেকর্ডগুলির জন্য Amount এর যোগফল বের করবে যেখানে Region "East" এবং Product "A" রয়েছে।


৫. Row Context এবং Filter Context এর মধ্যে সম্পর্ক

Row Context এবং Filter Context একে অপরের সাথে সম্পর্কিত হলেও, তাদের ব্যবহারের উদ্দেশ্য আলাদা। Row Context মূলত iterators এবং calculated columns এর জন্য ব্যবহৃত হয়, যেখানে ডেটার প্রতিটি সারির জন্য আলাদা ক্যালকুলেশন করা হয়। অন্যদিকে, Filter Context একটি টেবিল বা কলামের ফিল্টার প্রভাব এবং সিলেকশন নিয়ন্ত্রণ করে, যা ডেটার নির্দিষ্ট অংশ ক্যালকুলেশন করতে ব্যবহৃত হয়।

Filter Context সাধারণত measures এবং CALCULATE ফাংশনের মাধ্যমে ডেটা ফিল্টারিং এবং কাস্টম ক্যালকুলেশন করার জন্য ব্যবহৃত হয়, যেখানে Row Context সাধারণত calculated columns এবং iterators এর জন্য ব্যবহৃত হয়।


সারাংশ

Row Context এবং Filter Context ড্যাক্সের দুইটি অত্যন্ত গুরুত্বপূর্ণ কনসেপ্ট। Row Context এর মাধ্যমে প্রতিটি সারির জন্য আলাদা ক্যালকুলেশন করা হয়, এবং Filter Context এর মাধ্যমে আপনি ডেটা ফিল্টার করে নির্দিষ্ট অংশের ক্যালকুলেশন করতে পারেন। এই দুটি কনসেপ্ট একে অপরের সাথে যুক্ত হয়ে ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন করার প্রক্রিয়াকে শক্তিশালী করে তোলে। সঠিকভাবে Row Context এবং Filter Context ব্যবহার করলে আপনি ডেটার আরও গভীর বিশ্লেষণ এবং কার্যকরী রিপোর্ট তৈরি করতে পারবেন।

Content added By

Complex Calculations এর জন্য Aggregation Techniques

285

DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলি ডেটা বিশ্লেষণের জন্য অত্যন্ত কার্যকরী, বিশেষ করে complex calculations এবং aggregation তৈরি করার জন্য। DAX এ Aggregation Techniques ব্যবহার করে আপনি ডেটা সেটের উপর শক্তিশালী এবং কাস্টম ক্যালকুলেশন করতে পারেন, যেমন conditional aggregation, time intelligence aggregation, এবং filter-based aggregation

এই প্রবন্ধে আমরা complex calculations এবং aggregation techniques এর জন্য কিছু গুরুত্বপূর্ণ DAX ফাংশন এবং তাদের ব্যবহার নিয়ে আলোচনা করব।


১. SUM, AVERAGE, COUNT ফাংশন দ্বারা সাধারণ Aggregation

DAX এর SUM, AVERAGE, এবং COUNT ফাংশনগুলি সাধারণত ব্যবহার হয় ডেটার মোট যোগফল, গড় এবং গণনা নির্ধারণ করতে। এই ফাংশনগুলো সহজতর ক্যালকুলেশনের জন্য ব্যবহৃত হয়।

Example:

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

Total Sales = SUM(Sales[Amount])
Average Sales = AVERAGE(Sales[Amount])

এখানে, SUM ফাংশনটি Sales[Amount] এর মোট যোগফল নির্ধারণ করবে, এবং AVERAGE ফাংশনটি গড় বিক্রয় পরিমাণ বের করবে।


২. Conditional Aggregation: IF ও SWITCH ফাংশন

Conditional aggregation ব্যবহৃত হয় যখন আপনি শর্তসাপেক্ষে গণনা করতে চান, যেমন বিক্রয় পরিমাণ 1000 এর বেশি হলে বিশেষ একটি মূল্য বের করা।

IF ফাংশন:

IF ফাংশনটি শর্তসাপেক্ষ গণনা করার জন্য ব্যবহৃত হয়, যা একটি logical test এর ভিত্তিতে ক্যালকুলেশন পরিবর্তন করে।

High Value Sales = IF(Sales[Amount] > 1000, Sales[Amount], 0)

এখানে, IF ফাংশনটি যদি Sales[Amount] 1000 এর বেশি হয়, তবে সেই মানকে ফেরত দেবে, অন্যথায় 0 প্রদান করবে।

SWITCH ফাংশন:

SWITCH ফাংশনটি একাধিক শর্তের ভিত্তিতে বিভিন্ন ক্যালকুলেশন করতে ব্যবহৃত হয়। এটি অনেকগুলো IF শর্তের সমান কাজ করে।

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

এখানে, SWITCH ফাংশনটি বিক্রয় পরিমাণের ভিত্তিতে Sales Category নির্ধারণ করবে।


৩. FILTER এবং CALCULATE ফাংশন দিয়ে Conditional Aggregation

FILTER এবং CALCULATE ফাংশন ব্যবহার করে আপনি complex filtering এবং conditional aggregation করতে পারেন। CALCULATE ফাংশনটি filter context পরিবর্তন করতে ব্যবহৃত হয়, যা এক্সপ্রেশন বা ক্যালকুলেশনের ফলাফল পরিবর্তন করে।

Example:

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

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

এখানে, CALCULATE ফাংশনটি SUM ফাংশনের ফলাফল পরিবর্তন করবে এবং শুধু Sales[Region] = "East" শর্তের সাথে মিলিয়ে মোট বিক্রয় পরিমাণ হিসাব করবে।

Advanced Filtering with FILTER:

আপনি যদি Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করতে চান, যেখানে Amount 1000 এর বেশি এবং Region "East", তাহলে FILTER ফাংশন ব্যবহার করতে পারেন:

High Sales in East = CALCULATE(SUM(Sales[Amount]), FILTER(Sales, Sales[Amount] > 1000 && Sales[Region] = "East"))

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


৪. Time Intelligence Functions দিয়ে Aggregation

Time Intelligence Functions DAX-এ ব্যবহার করে আপনি সহজে Year-to-Date (YTD), Quarter-to-Date (QTD), এবং Month-to-Date (MTD) এর মতো সময়ভিত্তিক aggregation করতে পারেন।

TOTALYTD ফাংশন:

ধরা যাক, আপনি যদি Sales টেবিলের YTD Sales বের করতে চান:

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

এটি Sales[Amount] এর Year-to-Date যোগফল প্রদান করবে, যেখানে Sales[Date] কলামটি তারিখের তথ্য ধারণ করবে।

SAMEPERIODLASTYEAR ফাংশন:

যদি আপনি Sales টেবিলের গত বছরের একই সময়ের বিক্রয় পরিমাণ তুলনা করতে চান:

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

এটি Sales[Amount] এর মোট যোগফল দিবে গত বছরের একই সময়ের জন্য।

DATEADD ফাংশন:

DATEADD ফাংশনটি একটি নির্দিষ্ট পরিমাণ সময় (যেমন, মাস, বছর) add বা subtract করে ডেটার হিসাব করতে ব্যবহৃত হয়।

Sales Previous Year = CALCULATE(SUM(Sales[Amount]), DATEADD(Sales[Date], -1, YEAR))

এটি Sales টেবিলের Amount এর মোট যোগফল দেবে এক বছর আগের Sales[Date] অনুযায়ী।


৫. Advanced Aggregation Techniques: SUMX, AVERAGEX, COUNTX

X Functions যেমন SUMX, AVERAGEX, এবং COUNTX ফাংশনগুলি iterators হিসেবে কাজ করে। এগুলি row-by-row গণনা করতে ব্যবহৃত হয়, এবং একটি টেবিল বা এক্সপ্রেশন থেকে সমস্ত সারির উপর গণনা করে তাদের যোগফল, গড় বা গণনা নির্ধারণ করে।

SUMX:

SUMX ফাংশনটি একটি এক্সপ্রেশন বা টেবিলের উপর ভিত্তি করে row-by-row যোগফল নির্ধারণ করে।

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

এখানে, SUMX ফাংশনটি Sales[Quantity] এবং Sales[UnitPrice] এর গুণফল বের করবে এবং তার যোগফল প্রদান করবে।

AVERAGEX:

AVERAGEX ফাংশনটি একটি টেবিল বা এক্সপ্রেশন থেকে গড় নির্ধারণ করে।

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

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

COUNTX:

COUNTX ফাংশনটি একটি টেবিলের উপর row-by-row গণনা করে, এবং আপনি যেকোনো এক্সপ্রেশন ব্যবহার করতে পারেন।

Count High Value Sales = COUNTX(FILTER(Sales, Sales[Amount] > 1000), Sales[Amount])

এটি Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডের সংখ্যা গণনা করবে যেখানে Amount 1000 এর বেশি।


৬. Aggregation with DISTINCT

কখনো কখনো, আপনি distinct values এর ভিত্তিতে ক্যালকুলেশন করতে চাইতে পারেন, যেমন কোনো এক্সপ্রেশন বা মেট্রিকের ভিন্ন ভিন্ন মানের উপর ভিত্তি করে।

Example: Distinct Count of Salespersons

Distinct Salespersons = DISTINCTCOUNT(Sales[SalespersonID])

এটি Sales টেবিল থেকে বিভিন্ন বিক্রয় প্রতিনিধির সংখ্যা বের করবে।


সারাংশ

Complex Aggregation Techniques ব্যবহার করে DAX-এর মাধ্যমে আপনি শক্তিশালী এবং কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। SUM, AVERAGE, COUNT, FILTER, CALCULATE, TIME INTELLIGENCE, এবং X Functions ব্যবহার করে আপনি শর্তসাপেক্ষ aggregation, time-based calculations, এবং complex conditional logic তৈরি করতে পারেন। DAX-এর এই ফাংশনগুলির ব্যবহার ডেটা বিশ্লেষণ, রিপোর্টিং এবং ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য অত্যন্ত কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...