Advanced Calculations

Big Data and Analytics - ড্যাক্স ফাংশন (Dax Functions)
341

DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। এটি ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে ব্যবহৃত হয়। DAX-এর মাধ্যমে Advanced Calculations করা সম্ভব যা বিশ্লেষণ এবং রিপোর্ট তৈরির জন্য আরও গভীরতর এবং শক্তিশালী ফলাফল দেয়।

এই প্রবন্ধে, আমরা DAX এর কিছু Advanced Calculations ফাংশন নিয়ে আলোচনা করব, যেমন CALCULATE, FILTER, ALL, EARLIER, RANKX, এবং TIME INTELLIGENCE ফাংশনগুলি যা ব্যবসায়িক বিশ্লেষণের জন্য ব্যবহৃত হয়।


১. CALCULATE ফাংশন

CALCULATE ফাংশনটি ড্যাক্সের সবচেয়ে শক্তিশালী এবং বহুল ব্যবহৃত ফাংশনগুলির মধ্যে একটি। এটি একটি এক্সপ্রেশন (অথবা ক্যালকুলেশন) গঠন করার জন্য ব্যবহৃত হয় এবং সেই এক্সপ্রেশনের উপর নির্দিষ্ট filters প্রয়োগ করে ফলাফল পরিবর্তন করতে সহায়ক।

Syntax:

CALCULATE(<expression>, <filter1>, <filter2>, ...)
  • : এটি সেই ক্যালকুলেশন বা গণনা যা আপনি করতে চান।
  • : এক বা একাধিক filter যা আপনি প্রয়োগ করতে চান।

ব্যবহার:

যেমন, যদি আপনি Sales টেবিল থেকে Amount এর মোট যোগফল বের করতে চান, যেখানে Region হল "East":

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

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

CALCULATE ফাংশনটি অন্যান্য ফাংশনগুলির সাথে সংযুক্ত হয়ে complex filtering এবং conditional aggregation তৈরি করতে ব্যবহৃত হয়।


২. FILTER ফাংশন

FILTER ফাংশনটি একটি টেবিল বা কলামের উপর শর্ত প্রয়োগ করে এবং নির্দিষ্ট শর্ত পূর্ণ করা সারিগুলি ফিরিয়ে দেয়। এটি সাধারণত CALCULATE ফাংশনের সাথে ব্যবহৃত হয়।

Syntax:

FILTER(<table>, <condition>)
  • : একটি টেবিল বা রেঞ্জ।
  • : শর্ত বা এক্সপ্রেশন যা টেবিলের সারি ফিল্টার করার জন্য প্রয়োগ করা হয়।

ব্যবহার:

ধরা যাক, আপনি যদি Sales টেবিল থেকে শুধু সেই সারিগুলি নির্বাচন করতে চান, যেখানে Amount 1000 এর বেশি:

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

এই ফাংশনটি Sales টেবিলের সমস্ত সারি থেকে Amount > 1000 শর্ত অনুযায়ী সারি নির্বাচন করবে।


৩. ALL ফাংশন

ALL ফাংশনটি একটি টেবিল বা কলামের filter context সরিয়ে দেয় এবং ডেটাকে unfiltered অবস্থায় রাখে। এটি সাধারণত measure তৈরি করার সময়, যখন আপনি চান যে ফিল্টার প্রভাব মুক্ত রাখা হোক।

Syntax:

ALL(<table_or_column>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের মোট বিক্রয় পরিমাণ বের করতে চান এবং Region বা Product সম্পর্কিত কোনো ফিল্টার প্রভাব ফেলতে না চান, তাহলে আপনি ALL ব্যবহার করতে পারেন:

Total Sales All = CALCULATE(SUM(Sales[Amount]), ALL(Sales[Region]))

এটি Sales টেবিলের Region কলামের সকল ফিল্টার মুছে দিয়ে Sales[Amount] এর মোট যোগফল বের করবে।


৪. EARLIER ফাংশন

EARLIER ফাংশনটি একাধিক স্তরের row context (যেমন iterators এবং calculated columns) এর মধ্যে মান ফিরিয়ে আনার জন্য ব্যবহৃত হয়।

Syntax:

EARLIER(<expression>, <n>)
  • : যে এক্সপ্রেশন বা কলামটির মান আপনি ফিরিয়ে আনতে চান।
  • : row context স্তরের মধ্যে লুপ সংখ্যা।

ব্যবহার:

ধরা যাক, আপনি যদি Sales টেবিলের Amount এবং Discount এর মধ্যে পার্থক্য বের করতে চান, যেখানে আপনি Discount এর উপর ভিত্তি করে Amount এর মান পুনঃগণনা করবেন:

Discount Difference = 
    Sales[Amount] - EARLIER(Sales[Discount], 1)

এটি Sales টেবিলের প্রতিটি Discount মানের জন্য আগের Amount এর মান বের করবে।


৫. RANKX ফাংশন

RANKX ফাংশনটি একটি কলামের বা টেবিলের মধ্যে প্রতিটি মানের ranking নির্ধারণ করতে ব্যবহৃত হয়। এটি সাধারণত measure বা calculated column হিসাবে ব্যবহৃত হয় যখন আপনি ডেটার মধ্যে র‍্যাঙ্কিং তৈরি করতে চান।

Syntax:

RANKX(<table>, <expression>, <value>, <order>, <ties>)
  • : টেবিল যা র‍্যাঙ্ক নির্ধারণ করতে চান।
  • : গণনা বা মান যা র‍্যাঙ্কের জন্য ব্যবহার হবে।
  • : কাস্টম মূল্য যা র‍্যাঙ্ক নির্ধারণের জন্য ব্যবহৃত হয়।
  • : ASC (Ascending) বা DESC (Descending)।
  • : Dense বা Skip

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের ProductID অনুযায়ী Amount এর উপর র‍্যাঙ্কিং করতে চান:

Product Rank = RANKX(Sales, Sales[Amount], , DESC, Dense)

এটি Sales টেবিলের Amount অনুযায়ী ProductID এর Descending র‍্যাঙ্ক বের করবে এবং সমান মানের জন্য র‍্যাঙ্ক একে অপরের কাছাকাছি রাখবে।


৬. TIME INTELLIGENCE Functions

DAX-এ Time Intelligence ফাংশনগুলি সময় ভিত্তিক ক্যালকুলেশন করার জন্য ব্যবহৃত হয়। কিছু জনপ্রিয় Time Intelligence ফাংশন হলো:

  • TOTALYTD: Year-to-Date মোট গণনা করতে ব্যবহৃত হয়।
  • SAMEPERIODLASTYEAR: গত বছরের একই সময়ের জন্য ডেটা তুলনা করতে ব্যবহৃত হয়।
  • PARALLELPERIOD: কোনো নির্দিষ্ট সময় পিরিয়ডের তুলনা করতে ব্যবহৃত হয় (যেমন, 1 মাস, 1 বছর আগে)।
  • DATEADD: একটি তারিখে নির্দিষ্ট সময় যোগ বা বিয়োগ করতে ব্যবহৃত হয়।

উদাহরণ:

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

এটি Sales[Amount] এর Year-to-Date (YTD) মোট বিক্রয় নির্ধারণ করবে, যেখানে Sales[Date] কলাম ব্যবহার হবে।


সারাংশ

DAX Functions এর Advanced Calculations টুলসগুলি ডেটার উপর গভীর বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে অত্যন্ত কার্যকর। CALCULATE, FILTER, ALL, EARLIER, RANKX, এবং TIME INTELLIGENCE ফাংশনগুলি ব্যবহার করে আপনি জটিল ডেটা বিশ্লেষণ, শর্তাবলী ক্যালকুলেশন এবং সময় ভিত্তিক বিশ্লেষণ করতে পারেন। এগুলি Power BI এবং Excel-এ ডেটা মডেল তৈরি এবং রিপোর্টিং প্রক্রিয়াকে আরও শক্তিশালী এবং কার্যকরী করে তোলে।

Content added By

CALCULATETABLE দিয়ে Complex Table Calculations

258

DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, Excel, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলি বিশেষভাবে data modeling এবং complex calculations এর জন্য ডিজাইন করা হয়েছে। তাদের মধ্যে একটি গুরুত্বপূর্ণ ফাংশন হলো CALCULATETABLE, যা বিভিন্ন টেবিলের উপর complex table calculations বা টেবিল বিশ্লেষণ করতে ব্যবহৃত হয়। এই ফাংশনটির মাধ্যমে আপনি টেবিলের উপর কাস্টম ফিল্টার প্রয়োগ করতে পারেন এবং নির্দিষ্ট শর্তের ভিত্তিতে একটি নতুন টেবিল তৈরি করতে পারেন।

এই প্রবন্ধে, আমরা CALCULATETABLE ফাংশনটি কীভাবে কাজ করে এবং কীভাবে এটি complex table calculations করতে ব্যবহৃত হয় তা বিস্তারিতভাবে আলোচনা করব।


CALCULATETABLE ফাংশন কী?

CALCULATETABLE ফাংশনটি একটি টেবিল তৈরি করে যেখানে আপনি filter context পরিবর্তন করতে পারেন এবং একটি নতুন টেবিল তৈরি করতে পারেন। এটি সাধারণত CALCULATE ফাংশনের মতো কাজ করে, তবে এটি টেবিলের উপরে কাজ করে এবং তার ফলস্বরূপ একটি নতুন টেবিল ফিরিয়ে দেয়।

Syntax:

CALCULATETABLE(<table>, <filter1>, <filter2>, ...)
  • : আপনি যে টেবিলের উপর কাজ করতে চান।
  • , : একাধিক filters প্রয়োগ করতে পারেন, যেমন কলাম ফিল্টার, শর্তযুক্ত ফিল্টার ইত্যাদি।

CALCULATETABLE ফাংশনটি একটি টেবিল ফিরিয়ে দেয় যেখানে টেবিলের ডেটা ফিল্টার বা কাস্টম শর্ত অনুযায়ী পরিবর্তিত হয়।


CALCULATETABLE এর ব্যবহার

1. Basic Example: Filtering a Table

ধরা যাক, আপনার কাছে একটি Sales টেবিল রয়েছে, যেখানে ProductID, SalesAmount, এবং SalesDate কলাম রয়েছে। আপনি যদি চান যে SalesAmount 1000 এর বেশি হতে হবে এবং SalesDate 2021 সালের মধ্যে হতে হবে, তাহলে আপনি CALCULATETABLE ব্যবহার করতে পারেন।

Filtered Sales = CALCULATETABLE(
    Sales,
    Sales[SalesAmount] > 1000,
    YEAR(Sales[SalesDate]) = 2021
)

এখানে:

  • CALCULATETABLE ফাংশনটি Sales টেবিলটি ফিরিয়ে দেবে যেখানে SalesAmount 1000 এর বেশি এবং SalesDate 2021 সালের মধ্যে।

2. Complex Filtering with Multiple Conditions

যদি আপনি Sales টেবিলের জন্য একাধিক শর্ত প্রয়োগ করতে চান, যেমন, SalesAmount 1000 এর বেশি এবং Region "North" হতে হবে, তবে CALCULATETABLE ব্যবহার করা যেতে পারে:

Sales North = CALCULATETABLE(
    Sales,
    Sales[SalesAmount] > 1000,
    Sales[Region] = "North"
)

এটি Sales টেবিলের সমস্ত SalesAmount > 1000 এবং Region = "North" শর্ত পূর্ণ করা সারি ফিরিয়ে দেবে।


3. Using CALCULATETABLE with Aggregations

CALCULATETABLE ফাংশনটি SUM, AVERAGE, বা অন্যান্য aggregation ফাংশনগুলির সাথে ব্যবহার করা যেতে পারে। এইভাবে আপনি একটি নির্দিষ্ট শর্ত বা filter এর সাথে টেবিলের উপর সমষ্টি বা গড় হিসাব করতে পারেন।

ধরা যাক, আপনি Sales টেবিলের ProductID অনুযায়ী বিক্রয়ের মোট পরিমাণ বের করতে চান, তবে আপনি একটি নির্দিষ্ট Region এর উপর ফিল্টার প্রয়োগ করবেন:

Sales by Region = 
SUMX(
    CALCULATETABLE(
        Sales,
        Sales[Region] = "East"
    ),
    Sales[SalesAmount]
)

এখানে:

  • CALCULATETABLE ফাংশনটি শুধুমাত্র Sales[Region] = "East" শর্তে ডেটা নির্বাচন করবে।
  • তারপর, SUMX ফাংশনটি SalesAmount এর যোগফল বের করবে।

4. Handling Multiple Filters with CALCULATETABLE

CALCULATETABLE ফাংশনটি একাধিক ফিল্টার বা শর্ত ব্যবহারের জন্য খুবই কার্যকরী। আপনি একাধিক কলামের শর্ত একসাথে প্রয়োগ করতে পারেন।

ধরা যাক, আপনি চান যে Sales টেবিলের থেকে SalesAmount 1000 এর বেশি এবং Region "North" অথবা "South" হতে হবে, তখন আপনি CALCULATETABLE ফাংশনটি নিম্নলিখিতভাবে ব্যবহার করবেন:

Sales North or South = CALCULATETABLE(
    Sales,
    Sales[SalesAmount] > 1000,
    Sales[Region] IN {"North", "South"}
)

এটি Sales টেবিল থেকে এমন সমস্ত সারি ফিরিয়ে দেবে, যেখানে SalesAmount > 1000 এবং Region "North" বা "South"।


5. Using CALCULATETABLE with DISTINCT

আপনি CALCULATETABLE ফাংশনের সাথে DISTINCT ফাংশনও ব্যবহার করতে পারেন, যদি আপনি কেবল ইউনিক মান দেখতে চান। উদাহরণস্বরূপ, যদি আপনি চান Sales টেবিল থেকে শুধুমাত্র ProductID এর ইউনিক মান দেখতে, যেখানে বিক্রয়ের পরিমাণ 1000 এর বেশি:

Distinct Products = CALCULATETABLE(
    DISTINCT(Sales[ProductID]),
    Sales[SalesAmount] > 1000
)

এটি শুধুমাত্র সেই ProductID ফিরিয়ে দেবে, যেগুলোর SalesAmount 1000 এর বেশি।


CALCULATETABLE ফাংশনের সুবিধা

  • Filter Context: CALCULATETABLE ফাংশনটি filter context পরিবর্তন করতে সহায়ক। আপনি filters প্রয়োগ করতে পারেন এবং সেই অনুযায়ী টেবিলের ডেটা বিশ্লেষণ করতে পারেন।
  • Multiple Conditions: এটি একাধিক শর্ত বা ফিল্টার একসাথে প্রয়োগ করতে সক্ষম।
  • Aggregation: আপনি টেবিলের উপর aggregation ফাংশন প্রয়োগ করে কাস্টম ক্যালকুলেশন তৈরি করতে পারেন।
  • Flexible: এটি টেবিলের উপর জটিল শর্ত যুক্ত করে বিভিন্ন ধরনের কাস্টম ক্যালকুলেশন তৈরি করার জন্য অত্যন্ত উপকারী।

সারাংশ

CALCULATETABLE ফাংশনটি DAX-এ complex table calculations বা টেবিলের উপর কাস্টম ফিল্টার প্রয়োগের জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি filter context পরিবর্তন করে এবং একাধিক শর্তের ভিত্তিতে একটি নতুন টেবিল তৈরি করতে সহায়ক। আপনি একাধিক filters, aggregations, বা distinct values ব্যবহার করে কাস্টম টেবিল তৈরি করতে পারেন, যা ব্যবসায়িক বিশ্লেষণ এবং রিপোর্টিংকে আরও শক্তিশালী করে তোলে। CALCULATETABLE একটি অত্যন্ত কার্যকরী টুল যা DAX-এ ডেটা বিশ্লেষণ ও মডেলিংয়ের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

EARLIER এবং EARLIEST দিয়ে Row Context Management

282

DAX (Data Analysis Expressions) হলো একটি এক্সপ্রেশন ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলি row context management এর জন্য শক্তিশালী টুল সরবরাহ করে, যার মাধ্যমে আপনি সারির মান ব্যবহার করে গণনা বা বিশ্লেষণ করতে পারেন। EARLIER এবং EARLIEST ফাংশন দুটি অত্যন্ত গুরুত্বপূর্ণ ফাংশন, যা row context থেকে মানগুলির প্রাথমিক মান বা পূর্ববর্তী মান বের করতে ব্যবহৃত হয়।

এই প্রবন্ধে আমরা EARLIER এবং EARLIEST ফাংশন সম্পর্কে বিস্তারিত আলোচনা করব এবং কীভাবে এগুলি row context management এ সহায়ক হতে পারে তা দেখব।


EARLIER ফাংশন

EARLIER ফাংশনটি row context এর ভিতরে প্রাথমিক row context-এর মান ফিরিয়ে দেয়। এটি মূলত একটি ফাংশনের মধ্যে ডাবল row context-এ কাজ করার সময় ব্যবহৃত হয়, যেখানে একটি nested expression থাকে এবং আপনি প্রথম row context থেকে মান বের করতে চান।

Syntax:

EARLIER(<column>, <N>)
  • : এটি সেই কলাম যা আপনি ফিরিয়ে আনতে চান।
  • : এটি ঐ সংখ্যা যা নির্দেশ করে কতটি row context আগের অবস্থান থেকে মানটি নিতে হবে। সাধারণত, এটি 1 বা 2 হয়, তবে N এর মান নির্ভর করে কতোটি স্তরের row context আপনি ফিরিয়ে আনতে চান।

ব্যবহার:

EARLIER ফাংশনটি সাধারণত calculated columns এবং nested row context এ ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি যদি একটি Sales টেবিলের ProductID এবং SalesAmount কলামের জন্য আগের সারির SalesAmount হিসাব করতে চান, তাহলে EARLIER ফাংশনটি ব্যবহার করা হবে।

উদাহরণ:

ধরা যাক, আপনার Sales টেবিলের ProductID এবং SalesAmount কলাম রয়েছে এবং আপনি চান প্রতিটি SalesAmount এর জন্য পূর্ববর্তী সারির SalesAmount বের করতে। নিচের ফর্মুলাটি ব্যবহার করা যেতে পারে:

Previous Sales = 
CALCULATE(
    SUM(Sales[SalesAmount]),
    FILTER(Sales, Sales[ProductID] = EARLIER(Sales[ProductID]) && Sales[Date] < EARLIER(Sales[Date]))
)

এখানে:

  • EARLIER(Sales[ProductID]): এটি প্রথম ProductID-এর মানকে ফিরিয়ে দিচ্ছে, এবং EARLIER(Sales[Date]) প্রথম Date-এর মান ফিরিয়ে দিচ্ছে।
  • FILTER ফাংশনটি সারির মধ্যে ProductID এবং তারিখের মানের ভিত্তিতে ফিল্টার প্রয়োগ করবে।

EARLIEST ফাংশন

EARLIEST ফাংশনটি EARLIER ফাংশনের মতো কাজ করে, তবে এটি সাধারণত row context এর মধ্যে প্রথম সারি থেকে মান নিয়ে আসে, এবং এটি মূলত context transition এর সময় ব্যবহৃত হয়।

Syntax:

EARLIEST(<column>)
  • : এটি সেই কলাম বা এক্সপ্রেশন যার প্রাথমিক (earliest) মান আপনি ফিরিয়ে আনতে চান।

ব্যবহার:

EARLIEST ফাংশনটি ব্যবহৃত হয় যখন আপনি row context এর প্রথম মানকে ফিরিয়ে আনতে চান, এবং এটি calculated columns এবং nested context-এ ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি যদি কোনো Date কলামের প্রথম মান বের করতে চান, তাহলে EARLIEST ফাংশনটি ব্যবহার করতে পারেন।

উদাহরণ:

ধরা যাক, আপনার কাছে একটি Sales টেবিল যেখানে ProductID এবং Date কলাম রয়েছে। আপনি চান ProductID অনুসারে প্রথম Date নির্ধারণ করতে, তাহলে EARLIEST ফাংশনটি ব্যবহার করতে পারেন:

First Sale Date = 
CALCULATE(
    MIN(Sales[Date]),
    FILTER(Sales, Sales[ProductID] = EARLIEST(Sales[ProductID]))
)

এখানে:

  • EARLIEST(Sales[ProductID]): এটি প্রথম ProductID মানটি ফিরিয়ে দিচ্ছে।
  • MIN(Sales[Date]): এটি প্রথম Date (সর্বনিম্ন তারিখ) বের করে।

EARLIER এবং EARLIEST এর মধ্যে পার্থক্য

ফিচারEARLIEREARLIEST
ফাংশনের উদ্দেশ্যএকটি nested row context থেকে পূর্ববর্তী মান ফিরিয়ে আনাপ্রথম row context থেকে মান ফিরিয়ে আনা
ব্যবহারযখন একাধিক স্তরের row context থাকেসাধারণত একক স্তরের row context থেকে মান ফিরে পাওয়া
মুল্যএকটি নির্দিষ্ট N স্তরের পূর্ববর্তী মান ফিরিয়ে আনেপ্রথম row context-এর মান ফিরিয়ে আনে

ROW CONTEXT MANAGEMENT এর জন্য EARLIER এবং EARLIEST এর ব্যবহার

EARLIER এবং EARLIEST ফাংশনগুলি row context management এ গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন আপনি nested expressions বা multiple row context এর মধ্যে গণনা করছেন। এই ফাংশনগুলো আপনাকে একাধিক স্তরের মধ্যে ডেটা ব্যবস্থাপনা করতে এবং আরও দক্ষভাবে কাস্টম ক্যালকুলেশন তৈরি করতে সহায়তা করে।

চলমান উদাহরণ:

ধরা যাক, আপনি যদি Sales টেবিলের ProductID এবং SalesAmount এর জন্য previous row reference তৈরি করতে চান, তাহলে EARLIER ফাংশনটি ব্যবহার করা যাবে। এটি SalesAmount থেকে পূর্ববর্তী SalesAmount বের করতে সাহায্য করবে এবং সঠিকভাবে row context সমাধান করবে।


সারাংশ

EARLIER এবং EARLIEST হল DAX-এর শক্তিশালী ফাংশন যা row context management করতে ব্যবহৃত হয়। EARLIER ফাংশনটি nested row context থেকে মান বের করার জন্য ব্যবহৃত হয়, যখন EARLIEST ফাংশনটি প্রথম row context থেকে মান বের করতে সাহায্য করে। এই ফাংশনগুলির ব্যবহার আপনাকে কাস্টম ক্যালকুলেশন তৈরি করতে এবং একাধিক স্তরের মধ্যে ডেটা বিশ্লেষণ করতে সহায়ক হবে, যা আপনাকে আরও উন্নত ডেটা মডেল এবং বিশ্লেষণ তৈরি করতে সক্ষম করবে।

Content added By

VAR এবং RETURN এর মাধ্যমে Variables ব্যবহার

300

DAX (Data Analysis Expressions) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। ড্যাক্সের মধ্যে VAR এবং RETURN ফাংশনটি ব্যবহার করে আপনি variables তৈরি করতে পারেন, যা গণনা বা বিশ্লেষণ আরও সহজ, পরিষ্কার এবং দক্ষ করে তোলে। VAR এবং RETURN ফাংশনগুলি ডেটা মডেলিং এবং বিশ্লেষণের জন্য খুবই গুরুত্বপূর্ণ, কারণ এগুলি এক্সপ্রেশনগুলিকে আরও কার্যকরী এবং পরিস্কার করে তোলে।

এই প্রবন্ধে, আমরা VAR এবং RETURN এর মাধ্যমে variables ব্যবহারের প্রক্রিয়া এবং উদাহরণ আলোচনা করব।


VAR ফাংশন

VAR ফাংশনটি একটি ভেরিয়েবল তৈরি করতে ব্যবহৃত হয়, যার মাধ্যমে আপনি একটি মান সংরক্ষণ করতে পারেন এবং পরবর্তীতে তা ব্যবহার করতে পারেন। ভেরিয়েবল তৈরি করার মাধ্যমে আপনি আপনার ক্যালকুলেশন বা বিশ্লেষণকে আরও সহজ, দ্রুত এবং পরিষ্কার করতে পারেন। এটি গণনা বা শর্তমূলক পরীক্ষা করার জন্য খুবই উপকারী।

Syntax:

VAR <VariableName> = <Expression>
RETURN <Expression>
  • : এটি সেই নাম, যার মাধ্যমে আপনি ভেরিয়েবলটি ডিফাইন করবেন।
  • : এটি সেই এক্সপ্রেশন বা গণনা, যার মাধ্যমে আপনি ভেরিয়েবলটির মান নির্ধারণ করবেন।
  • RETURN: RETURN কিওয়ার্ডটি ব্যবহৃত হয় যাতে আপনি আপনার ভেরিয়েবলটির মান বা অন্য একটি এক্সপ্রেশন ফেরত পেতে পারেন।

ব্যবহার:

আপনি VAR ফাংশন ব্যবহার করে কোনও মান বা ফলাফল সংরক্ষণ করতে পারেন এবং পরে সেই মানটি ফেরত দিতে পারেন। এটি সাধারণত জটিল গণনার মধ্যে ব্যবহৃত হয়।

উদাহরণ ১: VAR এবং RETURN এর মাধ্যমে একটি সহজ গাণিতিক ক্যালকুলেশন

ধরা যাক, আপনি একটি নতুন Sales টেবিল তৈরি করতে চান, যেখানে আপনি SalesAmount এবং Discount এর ভিত্তিতে NetAmount বের করবেন।

Net Sales = 
VAR DiscountAmount = Sales[SalesAmount] * Sales[Discount]
RETURN Sales[SalesAmount] - DiscountAmount

এখানে:

  • VAR DiscountAmount: এখানে Sales[SalesAmount] এবং Sales[Discount] এর গুণফল বের করে তা DiscountAmount ভেরিয়েবল হিসেবে সংরক্ষণ করা হচ্ছে।
  • RETURN: এরপর RETURN এর মাধ্যমে আপনি মূল Sales[SalesAmount] থেকে DiscountAmount বাদ দিয়ে Net Sales বের করছেন।

এই ফাংশনটি জটিল ক্যালকুলেশনগুলি সহজ করে তোলে, কারণ ভেরিয়েবলগুলি পুনরায় ব্যবহারের মাধ্যমে গণনা করা যায় এবং কোডের পরিষ্কারতা বৃদ্ধি পায়।


RETURN কিওয়ার্ড

RETURN কিওয়ার্ডটি মূলত সেই এক্সপ্রেশন বা মান ফেরত দেয় যা আপনি VAR ফাংশনের মাধ্যমে সংরক্ষণ করেছেন। এটি কোনও ভেরিয়েবল বা এক্সপ্রেশন থেকে ফলাফল তৈরি করার জন্য ব্যবহৃত হয়। RETURN সাধারণত ভেরিয়েবল ডিফাইন করার পরে ব্যবহৃত হয়।

Syntax:

VAR <VariableName> = <Expression>
RETURN <Expression>

এখানে, RETURN এমনভাবে ব্যবহৃত হয় যে এটি এক্সপ্রেশন বা ভেরিয়েবলটির মান প্রদান করে।

উদাহরণ ২: SALES টেবিলের উপর কাজ করা

ধরা যাক, আপনি Sales টেবিলের জন্য একটি কাস্টম ক্যালকুলেশন তৈরি করতে চান যেখানে SalesAmount এবং TargetAmount এর তুলনা করা হবে এবং যদি SalesAmount বেশি হয় তাহলে "Target Achieved" আর কম হলে "Target Not Achieved" রিটার্ন করবে।

Sales Target Status = 
VAR SalesTotal = Sales[SalesAmount]
VAR TargetTotal = Sales[TargetAmount]
RETURN IF(SalesTotal > TargetTotal, "Target Achieved", "Target Not Achieved")

এখানে:

  • VAR SalesTotal: SalesAmount এর মান SalesTotal ভেরিয়েবল হিসাবে সংরক্ষণ করা হচ্ছে।
  • VAR TargetTotal: TargetAmount এর মান TargetTotal ভেরিয়েবল হিসাবে সংরক্ষণ করা হচ্ছে।
  • RETURN: এরপর RETURN এর মাধ্যমে IF শর্ত ব্যবহার করে নির্ধারণ করা হচ্ছে যে SalesAmount TargetAmount এর থেকে বেশি হলে "Target Achieved" হবে, অন্যথায় "Target Not Achieved" হবে।

এই উদাহরণে, VAR এবং RETURN ফাংশনগুলি একসাথে ব্যবহার করা হয়েছে ক্যালকুলেশনকে পরিষ্কার এবং কার্যকরী করতে।


VAR এবং RETURN এর সুবিধা

  1. ক্যালকুলেশন সহজ করা: VAR ফাংশনের মাধ্যমে যেকোনো গণনা বা শর্তের জন্য মধ্যবর্তী ফলাফল সংরক্ষণ করা সম্ভব, যা পুনরায় ব্যবহারযোগ্য এবং গাণিতিকভাবে কার্যকরী।
  2. কোডের পরিষ্কারতা: জটিল ক্যালকুলেশনগুলোকে ছোট ছোট অংশে বিভক্ত করে এবং ভেরিয়েবল ব্যবহার করে কোডটি পরিষ্কার ও বোঝার সহজ হয়।
  3. পারফরম্যান্স বৃদ্ধি: একাধিক গণনা বা শর্ত পুনরায় ব্যবহার না করে একটি ভেরিয়েবল তৈরির মাধ্যমে DAX ফাংশনের পারফরম্যান্স উন্নত করা যায়।
  4. উন্নত ডেটা মডেলিং: VAR এবং RETURN একসাথে ব্যবহার করা হলে আপনি আরও উন্নত ডেটা মডেলিং এবং কাস্টম রিপোর্ট তৈরি করতে পারবেন।

সারাংশ

VAR এবং RETURN ফাংশনগুলি DAX-এ একসাথে ব্যবহার করা হলে variables তৈরি করার জন্য অত্যন্ত কার্যকরী টুল। VAR ফাংশনটি একটি ভেরিয়েবল সংরক্ষণ করে এবং পরে RETURN এর মাধ্যমে সেই ভেরিয়েবল বা এক্সপ্রেশনটির মান ফেরত দেয়। এটি complex calculations এবং conditional aggregation এর জন্য বিশেষভাবে কার্যকরী, যেখানে clean calculations এবং reusable values প্রয়োজন। DAX ফাংশনটির সাহায্যে আপনি Power BI অথবা Excel-এ দ্রুত, পরিষ্কার এবং দক্ষ ক্যালকুলেশন করতে সক্ষম হবেন।

Content added By

HASONEVALUE এবং HASONEFILTER দিয়ে Data Validation

345

DAX (Data Analysis Expressions) হল একটি এক্সপ্রেশন ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে। HASONEVALUE এবং HASONEFILTER ফাংশনগুলি Data Validation বা ডেটা যাচাইয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে একটি নির্দিষ্ট কলামে বা ফিল্টারে একক মান আছে, যা বিভিন্ন ক্যালকুলেশন বা বিশ্লেষণে সহায়ক হতে পারে।

এই প্রবন্ধে, আমরা HASONEVALUE এবং HASONEFILTER ফাংশন সম্পর্কে বিস্তারিত জানব এবং এগুলি কিভাবে ডেটা যাচাই (data validation) এর জন্য ব্যবহার করা যায় তা দেখব।


১. HASONEVALUE ফাংশন

HASONEVALUE ফাংশনটি ব্যবহৃত হয় যখন আপনি নিশ্চিত করতে চান যে একটি নির্দিষ্ট কলামে একটি মাত্র ভ্যালু আছে। এটি বিশেষভাবে দরকারি যখন আপনি এমন ডেটা বিশ্লেষণ করতে চান যেখানে শুধুমাত্র একক মানের ভিত্তিতে ক্যালকুলেশন করতে হবে।

Sintax:

HASONEVALUE(<column>)
  • : সেই কলাম যার মধ্যে আপনি একক মান আছে কি না তা যাচাই করতে চান।

HASONEVALUE একটি Boolean (True/False) মান রিটার্ন করে:

  • TRUE: যদি কলামে একক মান থাকে।
  • FALSE: যদি কলামে একাধিক মান থাকে বা কোন মান না থাকে।

ব্যবহার উদাহরণ:

ধরা যাক, আপনার Sales টেবিল রয়েছে এবং আপনি চান নিশ্চিত করতে যে শুধুমাত্র একটি নির্দিষ্ট ProductID নির্বাচন করা হয়েছে কি না:

Valid Product Selection = HASONEVALUE(Sales[ProductID])

এখানে:

  • HASONEVALUE(Sales[ProductID]) ফাংশনটি যাচাই করবে যে Sales টেবিলের ProductID কলামে শুধুমাত্র একটি মান আছে।
  • যদি একটি মাত্র ProductID নির্বাচিত থাকে, তাহলে এটি TRUE রিটার্ন করবে, অন্যথায় FALSE রিটার্ন করবে।

এটি ডেটা যাচাইয়ের জন্য ব্যবহার করা যেতে পারে, যেমন filters বা slicers-এ একক মান নির্বাচন করা নিশ্চিত করা।


২. HASONEFILTER ফাংশন

HASONEFILTER ফাংশনটি ব্যবহার করা হয় যখন আপনি নিশ্চিত করতে চান যে একটি কলামের উপর একটি মাত্র ফিল্টার প্রয়োগ করা হয়েছে। এটি সাধারণত filters এবং slicers এর সাথে কাজ করার সময় ব্যবহৃত হয়, যেখানে আপনি চান যে একটি নির্দিষ্ট কলামের জন্য শুধুমাত্র একটি একক মান ফিল্টার করা হয়েছে।

Sintax:

HASONEFILTER(<column>)
  • : সেই কলাম যার উপর আপনি নিশ্চিত করতে চান যে একক ফিল্টার প্রয়োগ করা হয়েছে।

HASONEFILTER একটি Boolean (True/False) মান রিটার্ন করে:

  • TRUE: যদি কলামের উপর একটি মাত্র ফিল্টার প্রযোজ্য থাকে।
  • FALSE: যদি একাধিক ফিল্টার থাকে বা কোন ফিল্টার না থাকে।

ব্যবহার উদাহরণ:

ধরা যাক, আপনি Sales টেবিলের Region কলামের উপর single filter প্রয়োগ করা হয়েছে কিনা তা যাচাই করতে চান:

Valid Region Filter = HASONEFILTER(Sales[Region])

এখানে:

  • HASONEFILTER(Sales[Region]) ফাংশনটি যাচাই করবে যে Sales টেবিলের Region কলামের উপর শুধুমাত্র একটি ফিল্টার প্রয়োগ করা হয়েছে।
  • যদি একক Region ফিল্টার করা থাকে, তবে এটি TRUE রিটার্ন করবে, অন্যথায় FALSE রিটার্ন করবে।

এই ফাংশনটি বিশেষভাবে Power BI ড্যাশবোর্ডে filter context এ ব্যবহার করা যেতে পারে, যেখানে নিশ্চিত করতে হবে যে শুধুমাত্র একটি নির্দিষ্ট Region নির্বাচন করা হয়েছে।


HASONEVALUE এবং HASONEFILTER এর মধ্যে পার্থক্য

ফিচারHASONEVALUEHASONEFILTER
কাজকলামের মধ্যে একক মান আছে কিনা তা যাচাই করে।কলামের উপর একক ফিল্টার প্রয়োগ করা হয়েছে কিনা তা যাচাই করে।
ব্যবহারসাধারণত columns এর জন্য, যখন একক মান প্রয়োজন।সাধারণত filters বা slicers এর জন্য, যখন একক ফিল্টার প্রয়োজন।
রিটার্ন মানTRUE যদি একক মান থাকে, অন্যথায় FALSETRUE যদি একক ফিল্টার থাকে, অন্যথায় FALSE

ডেটা যাচাই করার জন্য HASONEVALUE এবং HASONEFILTER এর প্রয়োগ

১. Conditional Calculation Based on Single Value

ধরা যাক, আপনি Sales টেবিলের ProductID কলামের উপর conditional calculation করতে চান, যেখানে HASONEVALUE ফাংশন ব্যবহার করে নিশ্চিত করবেন যে একমাত্র একটি ProductID নির্বাচন করা হয়েছে:

Total Sales for Single Product = 
IF(HASONEVALUE(Sales[ProductID]), 
    SUM(Sales[SalesAmount]), 
    BLANK())

এখানে:

  • HASONEVALUE(Sales[ProductID]) ফাংশনটি নিশ্চিত করে যে একমাত্র একটি ProductID নির্বাচিত হয়েছে।
  • যদি একমাত্র ProductID নির্বাচিত থাকে, তবে SalesAmount এর যোগফল করা হবে, অন্যথায় কিছু রিটার্ন করা হবে না (BLANK রিটার্ন করবে)।

২. Validation with Filters

ধরা যাক, আপনি Region কলামের উপর single filter প্রয়োগ করা হয়েছে কিনা তা যাচাই করতে চান এবং তারপরে যদি শর্ত পূর্ণ হয়, তাহলে SalesAmount প্রদর্শন করতে চান:

Sales for Single Region = 
IF(HASONEFILTER(Sales[Region]), 
    SUM(Sales[SalesAmount]), 
    BLANK())

এখানে:

  • HASONEFILTER(Sales[Region]) ফাংশনটি যাচাই করবে যে Region কলামের উপর একটি একক ফিল্টার প্রয়োগ করা হয়েছে কিনা।
  • যদি একমাত্র Region ফিল্টার করা থাকে, তবে SalesAmount এর যোগফল প্রদর্শিত হবে, অন্যথায় BLANK রিটার্ন করবে।

সারাংশ

HASONEVALUE এবং HASONEFILTER ফাংশনগুলি DAX-এ data validation বা ডেটা যাচাই করার জন্য অত্যন্ত কার্যকরী টুল। HASONEVALUE ফাংশনটি নিশ্চিত করে যে একটি কলামে একক মান আছে এবং HASONEFILTER ফাংশনটি নিশ্চিত করে যে একটি কলামের উপর একক ফিল্টার প্রয়োগ করা হয়েছে। এই ফাংশনগুলি বিশেষভাবে কাস্টম ক্যালকুলেশন এবং শর্তযুক্ত বিশ্লেষণের জন্য ব্যবহৃত হয়, যেখানে একক মান বা ফিল্টার থাকা নিশ্চিত করা প্রয়োজন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...