Advanced Filtering এবং Query Techniques

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

DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং রিপোর্ট তৈরির জন্য। Advanced Filtering এবং Query Techniques হল DAX-এর এমন কিছু শক্তিশালী বৈশিষ্ট্য যা ব্যবহারকারীদের জটিল ডেটা ফিল্টারিং এবং কাস্টম কোয়েরি তৈরি করতে সহায়ক। এই ফাংশনগুলির মাধ্যমে আপনি dynamic filtering, conditional queries, এবং contextual data retrieval করতে পারেন।

এই প্রবন্ধে, আমরা Advanced Filtering এবং Query Techniques সম্পর্কে আলোচনা করব এবং কিভাবে DAX-এ filter context, row context, এবং calculated columns ব্যবহার করে উন্নত ফিল্টারিং এবং কাস্টম কোয়েরি তৈরি করা যায় তা দেখাব।


১. FILTER ফাংশন

FILTER ফাংশনটি DAX-এর একটি শক্তিশালী ফাংশন, যা নির্দিষ্ট শর্ত বা এক্সপ্রেশন অনুযায়ী একটি টেবিলের সারি ফিল্টার করে।

Syntax:

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

ব্যবহার:

ধরা যাক, আপনি Sales টেবিল থেকে এমন রেকর্ড চাচ্ছেন, যেখানে Amount 1000 এর বেশি এবং Region "North" হতে হবে:

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

এই ফাংশনটি Sales টেবিল থেকে Amount 1000 এর বেশি এবং Region "North" এর সারিগুলি ফিরিয়ে দেবে।


২. CALCULATE ফাংশন এবং FILTER ফাংশনের কম্বিনেশন

CALCULATE ফাংশনটি একটি এক্সপ্রেশন ক্যালকুলেট করার জন্য ব্যবহৃত হয়, যেখানে আপনি filter context পরিবর্তন করতে পারেন। এটি একাধিক ফিল্টার প্রয়োগ করতে ব্যবহার করা হয়।

Syntax:

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

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান, তবে Region "North" এবং Amount 1000 এর বেশি হতে হবে:

Total Sales in North = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "North", Sales[Amount] > 1000)

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


৩. ALL ফাংশন এবং Filter Context Removal

ALL ফাংশনটি টেবিল বা কলামের filter context সরিয়ে দেয়। এটি একটি শক্তিশালী ফাংশন, যা ডেটাকে unfiltered অবস্থায় ফিরিয়ে দেয় এবং aggregate functions এর জন্য খুবই উপকারী।

Syntax:

ALL(<table_or_column>)

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের মোট Amount বের করতে চান, কিন্তু Region বা অন্য কোনো ফিল্টারের প্রভাব মুছে দিতে চান:

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

এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে Region কলামের ফিল্টার প্রভাবটি মুছে ফেলবে।


৪. ALLEXCEPT ফাংশন

ALLEXCEPT ফাংশনটি ALL ফাংশনের মতোই কাজ করে, তবে এটি টেবিলের একটি নির্দিষ্ট কলামের ফিল্টার রেখে দেয় এবং অন্য সকল কলামের ফিল্টার মুছে দেয়। এটি খুবই উপকারী যখন আপনি একটি নির্দিষ্ট কলামের উপর ফিল্টার রাখতে চান এবং অন্যগুলো মুছে দিতে চান।

Syntax:

ALLEXCEPT(<table>, <column1>, <column2>, ...)

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের Amount এর মোট যোগফল বের করতে চান, তবে আপনি Region কলামের উপর ফিল্টার রাখতে চান এবং অন্য কলামের ফিল্টার মুছে দিতে চান:

Total Sales by Region = CALCULATE(SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Region]))

এটি Sales[Amount] এর মোট যোগফল বের করবে, কিন্তু Region কলামের ফিল্টার থাকবে।


৫. CROSSFILTER ফাংশন

CROSSFILTER ফাংশনটি filter direction নিয়ন্ত্রণ করতে ব্যবহৃত হয়, বিশেষত bi-directional relationships ব্যবহৃত হলে। এটি টেবিলগুলির মধ্যে সম্পর্কের ফিল্টার প্রভাব নিয়ন্ত্রণ করতে সহায়ক।

Syntax:

CROSSFILTER(<column1>, <column2>, <filter_direction>)

ব্যবহার:

ধরা যাক, আপনি চান যে Sales এবং Customers টেবিলের মধ্যে ফিল্টার প্রভাব একে অপরের ওপর প্রযোজ্য হোক:

Total Sales with Customer Filter = CALCULATE(SUM(Sales[Amount]), CROSSFILTER(Customers[CustomerID], Sales[CustomerID], BOTH))

এটি Sales এবং Customers টেবিলের মধ্যে bi-directional filter প্রয়োগ করবে।


৬. TREATAS ফাংশন

TREATAS ফাংশনটি ব্যবহার করা হয় যখন আপনি একটি এক্সপ্রেশন বা টেবিলের মানকে অন্য একটি কলাম বা টেবিলের মান হিসেবে ব্যবহার করতে চান, যা virtual relationships তৈরি করে।

Syntax:

TREATAS(<table>, <column1>, <column2>, ...)

ব্যবহার:

যেমন, আপনি যদি Products টেবিলের ProductCode কলামের মানকে Sales টেবিলের ProductID কলামের মান হিসেবে ব্যবহার করতে চান:

Sales by Product Code = CALCULATE(SUM(Sales[Amount]), TREATAS(Products[ProductCode], Sales[ProductID]))

এখানে TREATAS ফাংশনটি Products[ProductCode] এর মানকে Sales[ProductID] এর মান হিসেবে ব্যবহার করবে।


৭. EARLIER ফাংশন

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

Syntax:

EARLIER(<expression>, <n>)

ব্যবহার:

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

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

এটি Sales[Amount] থেকে Sales[Discount] এর পার্থক্য বের করবে এবং আগের Discount মান ব্যবহার করবে।


সারাংশ

Advanced Filtering এবং Query Techniques DAX-এ অত্যন্ত শক্তিশালী টুলস, যা ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন করতে সহায়ক। FILTER, CALCULATE, ALL, ALLEXCEPT, CROSSFILTER, TREATAS, এবং EARLIER ফাংশনগুলি ডেটা প্রসেসিং, শর্তানুসারে ক্যালকুলেশন এবং সম্পর্কিত ডেটা নিয়ে কাজ করার জন্য ব্যবহৃত হয়। এই ফাংশনগুলির সঠিক ব্যবহার ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরির প্রক্রিয়াকে আরও দ্রুত এবং কার্যকরী করে তোলে।

Content added By

ISFILTERED, ISCROSSFILTERED এর মাধ্যমে Filter Checking

252

DAX (Data Analysis Expressions) একটি শক্তিশালী ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশনগুলির মধ্যে filter checking অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি filter context এর প্রভাব পরীক্ষা করতে সহায়ক এবং রিপোর্ট বা ড্যাশবোর্ডের মধ্যে সঠিক ডেটা প্রদর্শন নিশ্চিত করে। এই প্রক্রিয়ায় ISFILTERED এবং ISCROSSFILTERED ফাংশন দুটি খুবই কার্যকরী।

এই প্রবন্ধে আমরা ISFILTERED এবং ISCROSSFILTERED ফাংশন ব্যবহার করে filter checking এর পদ্ধতি এবং এগুলির ব্যবহার শিখব।


১. ISFILTERED ফাংশন

ISFILTERED ফাংশনটি ব্যবহৃত হয় কোনো কলাম বা টেবিলের filter context পরীক্ষা করতে, অর্থাৎ এটি যাচাই করে যে নির্দিষ্ট কলামে কোনো ফিল্টার প্রয়োগ করা হয়েছে কিনা।

Syntax:

ISFILTERED(<column_name>)
  • <column_name>: এটি সেই কলাম যা আপনি filter প্রয়োগ হয়েছে কিনা তা পরীক্ষা করতে চান।

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের Region কলামে কোনো ফিল্টার প্রয়োগ হয়েছে কিনা তা পরীক্ষা করতে চান, তাহলে আপনি ISFILTERED ফাংশনটি ব্যবহার করতে পারেন:

Is Region Filtered = ISFILTERED(Sales[Region])

এই ফাংশনটি TRUE রিটার্ন করবে যদি Sales[Region] কলামে কোনো filter context প্রয়োগ করা হয়, এবং FALSE রিটার্ন করবে যদি কোনো ফিল্টার না থাকে।

অ্যাপ্লিকেশন:

আপনি এই ফাংশনটি বিভিন্ন DAX measures বা calculated columns এ ব্যবহার করতে পারেন, যেমন যখন আপনি চাইবেন একটি নির্দিষ্ট রিপোর্ট বা কাস্টম মেট্রিকের ফলাফল only when certain filters are applied


২. ISCROSSFILTERED ফাংশন

ISCROSSFILTERED ফাংশনটি ব্যবহৃত হয় একটি কলাম বা টেবিলের মধ্যে bi-directional relationship-এ কোনো ফিল্টার প্রয়োগ হয়েছে কিনা তা পরীক্ষা করতে। এটি যাচাই করে যে একটি কলামকে অন্য টেবিলের মধ্যে ফিল্টার করার প্রভাব রয়েছে কিনা।

Syntax:

ISCROSSFILTERED(<column_name>)
  • <column_name>: এটি সেই কলাম যা আপনি cross-filter হয়েছে কিনা তা পরীক্ষা করতে চান।

ব্যবহার:

ধরা যাক, আপনার Sales এবং Products টেবিলের মধ্যে সম্পর্ক রয়েছে এবং আপনি জানতে চান যে Sales টেবিলের ProductID কলামের উপর কোনো cross-filter প্রয়োগ করা হয়েছে কিনা। আপনি ISCROSSFILTERED ফাংশনটি ব্যবহার করতে পারেন:

Is Product Cross Filtered = ISCROSSFILTERED(Sales[ProductID])

এটি TRUE রিটার্ন করবে যদি Sales[ProductID] কলামের উপর cross-filtering প্রভাবিত হয়, এবং FALSE রিটার্ন করবে যদি কোনো cross-filtering প্রভাবিত না হয়।

অ্যাপ্লিকেশন:

এই ফাংশনটি ব্যবহার করে আপনি পরীক্ষা করতে পারেন যে একটি টেবিলের মধ্যে অন্যান্য সম্পর্কের মাধ্যমে কোন filter context প্রভাবিত হচ্ছে কিনা, বিশেষত যখন bi-directional relationships ব্যবহৃত হয়।


ISFILTERED vs. ISCROSSFILTERED

ফিচারISFILTEREDISCROSSFILTERED
ব্যবহারএকক কলামে filter context চেক করা।cross-filter context পরীক্ষা করা, বিশেষ করে bi-directional relationships
কোন ক্ষেত্রে ব্যবহৃত হয়একটি কলামে direct filter প্রয়োগ চেক করা।এক বা একাধিক টেবিলের মধ্যে bi-directional filter প্রয়োগ চেক করা।
ফলাফলTRUE যদি কলামে filter context থাকে, অন্যথায় FALSETRUE যদি কলামে cross-filter থাকে, অন্যথায় FALSE

ব্যবহারিক উদাহরণ

১. ISFILTERED উদাহরণ:

ধরা যাক, আপনি Sales টেবিলের Amount এর উপর একটি কাস্টম measure তৈরি করতে চান যা শুধুমাত্র তখনই calculate হবে যদি Region কলামে filter প্রয়োগ করা থাকে। এর জন্য আপনি ISFILTERED ফাংশন ব্যবহার করতে পারেন:

Sales Amount with Region Filter = 
IF(
    ISFILTERED(Sales[Region]),
    SUM(Sales[Amount]),
    0
)

এই ফাংশনটি:

  • TRUE হলে Sales[Region] কলামে কোনো ফিল্টার প্রয়োগ করা হয়, তখন Sales[Amount] এর যোগফল দেখাবে।
  • FALSE হলে Sales[Region] কলামে ফিল্টার প্রয়োগ না থাকলে 0 রিটার্ন করবে।

২. ISCROSSFILTERED উদাহরণ:

ধরা যাক, আপনি চান যে ProductID কলামে যদি cross-filter প্রয়োগ করা থাকে, তবে Sales টেবিলের মোট বিক্রয় পরিমাণ দেখানো হোক। এর জন্য আপনি ISCROSSFILTERED ফাংশন ব্যবহার করতে পারেন:

Sales with Product Cross Filter = 
IF(
    ISCROSSFILTERED(Sales[ProductID]),
    SUM(Sales[Amount]),
    0
)

এই ফাংশনটি:

  • TRUE হলে Sales[ProductID] কলামে cross-filtering প্রয়োগ হলে, তখন Sales[Amount] এর যোগফল দেখাবে।
  • FALSE হলে Sales[ProductID] কলামে cross-filtering প্রয়োগ না হলে 0 রিটার্ন করবে।

সারাংশ

ISFILTERED এবং ISCROSSFILTERED ফাংশনগুলি DAX-এ filter context এবং cross-filter context চেক করার জন্য ব্যবহৃত হয়। ISFILTERED একক কলামে filter প্রয়োগ পরীক্ষা করে, যখন ISCROSSFILTERED টেবিলের মধ্যে cross-filtering প্রয়োগ পরীক্ষা করে। এই ফাংশনগুলি ব্যবহার করে আপনি ডেটার শর্ত এবং পরিস্থিতি পরীক্ষা করতে পারবেন, যাতে সঠিক calculation এবং measure তৈরি করতে পারেন।

Content added By

FILTERS এবং SELECTEDMEASURE এর মাধ্যমে Complex Filters তৈরি

232

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

এই প্রবন্ধে, আমরা FILTERS এবং SELECTEDMEASURE ফাংশন ব্যবহার করে কীভাবে Complex Filters তৈরি করা যায়, তা বিস্তারিত আলোচনা করব।


১. FILTERS ফাংশন

FILTERS ফাংশনটি ব্যবহৃত হয় যখন আপনি একটি কলাম বা টেবিলের ফিল্টার কনটেক্সটের উপর ভিত্তি করে মান বের করতে চান। এটি একটি table বা column থেকে সক্রিয় ফিল্টার প্রভাব চিহ্নিত করে এবং filter context সম্পর্কে তথ্য প্রদান করে।

Syntax:

FILTERS(<column>)
  • : এটি একটি কলাম বা টেবিল হতে পারে, যার উপর ফিল্টার কনটেক্সট প্রয়োগ করা হয়েছে।

ব্যবহার:

FILTERS ফাংশনটি সাধারণত ব্যবহার করা হয় CALCULATE বা IF ফাংশনের সাথে, যেখানে আপনি filter context বা current selection নির্ধারণ করতে চান।

উদাহরণ ১:

ধরা যাক, আপনার Sales টেবিল রয়েছে এবং আপনি Amount কলামের উপর প্রয়োগ করা সক্রিয় ফিল্টারের মান জানতে চান:

Active Filters = FILTERS(Sales[Amount])

এই ফাংশনটি Sales[Amount] কলামের সক্রিয় ফিল্টারের তথ্য ফেরত দিবে।

উদাহরণ ২:

আপনি যদি জানতে চান ProductID এর উপর যে ফিল্টার প্রয়োগ করা হয়েছে তা কী, তাহলে আপনি FILTERS ফাংশনটি ব্যবহার করতে পারেন:

Active Product Filters = FILTERS(Sales[ProductID])

এটি Sales[ProductID] কলামের সক্রিয় ফিল্টারের মান প্রদান করবে।


২. SELECTEDMEASURE ফাংশন

SELECTEDMEASURE ফাংশনটি বর্তমানে নির্বাচন করা measure বা এক্সপ্রেশন ফেরত দেয়। এটি সাধারণত যখন আপনি dynamic measure বা multi-measure ক্যালকুলেশন করতে চান, তখন ব্যবহৃত হয়।

Syntax:

SELECTEDMEASURE()
  • এই ফাংশনটি কোনো আর্গুমেন্ট নেয় না, এটি শুধুমাত্র বর্তমানে নির্বাচন করা measure এর মান প্রদান করে।

ব্যবহার:

SELECTEDMEASURE ফাংশনটি ব্যবহারকারীর নির্বাচিত মেজারের মান ফেরত দেয়। এটি সাধারণত multi-measure ক্যালকুলেশন করতে সহায়ক।

উদাহরণ ১:

ধরা যাক, আপনি একটি কাস্টম মেজার তৈরি করতে চান, যা Sales[Amount] এবং Sales[Discount] এর মানের ভিত্তিতে সিদ্ধান্ত নেবে:

Sales After Discount = 
IF(SELECTEDMEASURE() = "Sales[Amount]", SUM(Sales[Amount]), SUM(Sales[Amount]) - SUM(Sales[Discount]))

এখানে:

  • SELECTEDMEASURE() ফাংশনটি নির্ধারণ করে যে বর্তমানে কোন মেজার নির্বাচন করা হয়েছে।
  • যদি Sales[Amount] নির্বাচন করা থাকে, তবে শুধু Amount যোগফল প্রদান করা হবে, অন্যথায় Discount বাদ দিয়ে মোট বিক্রয় পরিমাণ নির্ধারণ করা হবে।

উদাহরণ ২:

আপনি যদি একটি কাস্টম মেজার তৈরি করতে চান, যা selected measure এর উপর ভিত্তি করে filter প্রয়োগ করবে, তাহলে SELECTEDMEASURE ফাংশনটি ব্যবহার করতে পারেন:

Adjusted Sales = 
IF(
    SELECTEDMEASURE() = "Sales[Amount]", 
    CALCULATE(SUM(Sales[Amount]), Sales[Region] = "North"), 
    SUM(Sales[Amount])
)

এখানে:

  • SELECTEDMEASURE() ফাংশনটি Sales[Amount] এর মান চেক করবে।
  • যদি Sales[Amount] নির্বাচন করা থাকে, তবে Region = "North" শর্ত দিয়ে সেলস পরিমাণের যোগফল বের করা হবে।

FILTERS এবং SELECTEDMEASURE এর মাধ্যমে Complex Filters তৈরি

আপনি FILTERS এবং SELECTEDMEASURE ফাংশনগুলিকে একসাথে ব্যবহার করে complex filters তৈরি করতে পারেন, যা dynamic filtering এবং dynamic measures পরিচালনা করতে সহায়ক। উদাহরণস্বরূপ, আপনি একটি মেজার তৈরি করতে পারেন যা ডেটার উপরে conditional filters প্রয়োগ করবে।

Complex Example:

ধরা যাক, আপনি এমন একটি কাস্টম মেজার তৈরি করতে চান যা Sales টেবিলের উপর dynamic filter প্রয়োগ করবে এবং তখন Sales[Amount] এর যোগফল প্রদান করবে, যখন Region "North" হয়, এবং অন্যথায় Sales[Discount] প্রদান করবে।

Dynamic Sales Calculation = 
IF(
    FILTERS(Sales[Region]) = "North", 
    CALCULATE(SUM(Sales[Amount]), Sales[Region] = "North"),
    SELECTEDMEASURE()
)

এখানে:

  • FILTERS(Sales[Region]) ফাংশনটি চেক করবে যে বর্তমানে Region এর উপর কোন ফিল্টার প্রয়োগ করা হয়েছে।
  • যদি Region = "North" হয়, তবে Sales[Amount] এর যোগফল প্রদান করবে, অন্যথায় SELECTEDMEASURE ফাংশনটি বর্তমানে নির্বাচিত মেজারের মান ফেরত দেবে।

Best Practices for Using FILTERS and SELECTEDMEASURE

  1. Filter Context Understanding: FILTERS ফাংশন ব্যবহার করার সময়, আপনাকে filter context বুঝতে হবে যাতে সঠিকভাবে ফিল্টার প্রভাব প্রয়োগ করতে পারেন।
  2. Dynamic Calculations: SELECTEDMEASURE ব্যবহার করার মাধ্যমে আপনি dynamic calculations তৈরি করতে পারেন, যা multi-measure রিপোর্টিং এবং dynamic filtering এর জন্য উপকারী।
  3. Performance Considerations: যখন complex filters তৈরি করবেন, তখন আপনার DAX expressions এর পারফরম্যান্স নিশ্চিত করতে efficient filtering techniques ব্যবহার করুন।

সারাংশ

FILTERS এবং SELECTEDMEASURE ফাংশনগুলি ড্যাক্সে complex filters তৈরি করতে সহায়ক এবং dynamic filtering এবং dynamic measures পরিচালনা করতে ব্যবহৃত হয়। FILTERS ফাংশনটি টেবিল বা কলামের উপর ফিল্টার কনটেক্সট চিহ্নিত করতে ব্যবহৃত হয়, যখন SELECTEDMEASURE ফাংশনটি বর্তমান নির্বাচিত মেজারের মান প্রদান করে। এই ফাংশনগুলির দক্ষ ব্যবহার complex calculations এবং conditional filters তৈরি করতে সাহায্য করে, যা ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরিতে আরও নিখুঁত ফলাফল প্রদান করে।

Content added By

DAX Queries লিখা এবং চলমান করা

403

DAX (Data Analysis Expressions) হল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। DAX Queries ব্যবহার করে আপনি data retrieval, aggregation, এবং complex calculations করতে পারেন। এই প্রবন্ধে, আমরা DAX Queries লিখা এবং তাদের কার্যকরভাবে চলমান করার প্রক্রিয়া নিয়ে আলোচনা করব।


DAX Queries কী?

DAX Queries হল DAX ভাষায় লেখা এক্সপ্রেশন যা Power BI বা SSAS ডেটা মডেল থেকে ডেটা অ্যাক্সেস এবং ক্যালকুলেশন করতে ব্যবহৃত হয়। DAX Queries মূলত calculations বা aggregations করা, ডেটা ফিল্টার বা সার্চ করা এবং ফলস্বরূপ data tables বা measures তৈরি করা হয়।

DAX Queries সাধারণত Power BI বা SQL Server Management Studio (SSMS) এর মধ্যে Data Analysis বা Data Modeling সেশনে ব্যবহার করা হয়।


DAX Queries লিখার পদ্ধতি

১. Power BI এর মধ্যে DAX Query লেখা

Power BI এর DAX Query Editor ব্যবহার করে আপনি DAX কোড লিখতে এবং চলাতে পারেন। Power BI ডেক্সটপের মাধ্যমে DAX কোড লিখতে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

  1. Power BI Desktop খুলুন এবং Data View-এ যান।
  2. আপনি একটি টেবিল বা measure তৈরি করতে চান, তার জন্য Modeling ট্যাব থেকে New Measure বা New Column নির্বাচন করুন।
  3. আপনার কোডটি টাইপ করুন এবং Enter চাপুন।

উদাহরণ:

ধরা যাক, আপনি Sales টেবিলের SalesAmount এর মোট যোগফল বের করতে চান, তাহলে আপনি একটি নতুন measure তৈরি করতে পারেন:

Total Sales = SUM(Sales[SalesAmount])

এটি Sales টেবিলের SalesAmount কলামের মোট যোগফল বের করবে।

২. Power BI Query Editor-এ DAX Query চালানো

Power BI-তে আপনি New Table বা New Measure তৈরি করার মাধ্যমে সরাসরি DAX কোড ব্যবহার করে কাস্টম ক্যালকুলেশন তৈরি করতে পারেন। আপনি যদি Power Query Editor ব্যবহার করে DAX কোড চালাতে চান, তবে:

  1. Transform Data ক্লিক করুন এবং Power Query Editor খুলুন।
  2. একটি নতুন কাস্টম কলাম তৈরি করতে Add Column ট্যাব থেকে Custom Column নির্বাচন করুন।
  3. DAX কোড লিখুন এবং OK চাপুন।

DAX Queries-এর মাধ্যমে Complex Calculations

১. Time Intelligence Calculation

Time Intelligence ফাংশনগুলির মধ্যে সবচেয়ে জনপ্রিয় হলো YTD, QTD, এবং MTD। এই ফাংশনগুলি ব্যবহার করে আপনি Year-to-Date, Quarter-to-Date, এবং Month-to-Date ক্যালকুলেশন করতে পারেন।

উদাহরণ: YTD Sales

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

এটি SalesAmount এর Year-to-Date মোট বিক্রয় পরিমাণ বের করবে, যেখানে Sales[Date] কলামটি ব্যবহার করা হবে।

২. Conditional Aggregation

CALCULATE ফাংশনটি ব্যবহার করে আপনি কাস্টম শর্তে aggregation করতে পারেন। FILTER ফাংশন ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে aggregation করা যায়।

উদাহরণ: Total Sales in East Region

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

এটি Sales টেবিলের SalesAmount এর মোট যোগফল বের করবে, তবে শুধুমাত্র যখন Sales[Region] "East" হবে।

৩. Ranking Functions

RANKX ফাংশনটি ব্যবহার করে আপনি ডেটার মধ্যে র‌্যাঙ্কিং তৈরি করতে পারেন। এটি কোনো মেট্রিক্স (যেমন বিক্রয় পরিমাণ) এর ভিত্তিতে র‍্যাঙ্ক প্রদান করে।

উদাহরণ: Product Ranking

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

এটি Products টেবিলের মধ্যে SalesAmount এর ভিত্তিতে প্রতিটি পণ্যের ranking নির্ধারণ করবে।


DAX Query লিখার সময় কিছু গুরুত্বপূর্ণ টিপস

১. Measures vs Calculated Columns

  • Measures এবং Calculated Columns এর মধ্যে পার্থক্য বুঝে কাজ করুন। Measures সাধারণত aggregations বা dynamic calculations জন্য ব্যবহৃত হয়, যেখানে Calculated Columns টেবিলের প্রতিটি সারির জন্য নির্দিষ্ট মান নির্ধারণ করে।

২. Variables ব্যবহার করা

Variables ব্যবহার করা DAX কোড পরিষ্কার এবং দ্রুত করে তোলে। একটি ভেরিয়েবল একবার হিসাব করলে এবং পরবর্তীতে সেই মানটি ব্যবহার করা হলে পারফরম্যান্স আরও বৃদ্ধি পায়।

Sales Growth = 
VAR TotalSales = SUM(Sales[SalesAmount])
VAR LastYearSales = CALCULATE(SUM(Sales[SalesAmount]), SAMEPERIODLASTYEAR(Sales[Date]))
RETURN (TotalSales - LastYearSales) / LastYearSales

৩. Filtering and Context Transition

FILTER, ALL, এবং CALCULATE ফাংশনগুলি ব্যবহার করার সময় সতর্কতা অবলম্বন করুন, কারণ এগুলি context transition ঘটাতে পারে এবং কোডের কার্যকারিতা বা পারফরম্যান্সে প্রভাব ফেলতে পারে।

৪. DAX Query Optimization

যখন জটিল DAX ক্যালকুলেশন করছেন, query optimization এ মনোযোগ দিন। পরিমাণে কম calculated columns, efficient filtering, এবং সঠিক aggregation functions ব্যবহার করা উচিত।


DAX Queries এর মাধ্যমে Data Analysis

DAX Queries ব্যবহার করে আপনি data analysis, time intelligence, aggregation, এবং ranking এর মতো আরও অনেক কার্যকরী বিশ্লেষণ করতে পারেন। DAX টুলসের মাধ্যমে আপনি আপনার রিপোর্টিং এবং বিশ্লেষণ প্রক্রিয়া আরও সুনির্দিষ্ট এবং দ্রুত করতে পারবেন, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণে সহায়ক।


সারাংশ

DAX Queries লিখে এবং চলমান করে, আপনি Power BI, Power Pivot, এবং SSAS-এ শক্তিশালী data analysis এবং reporting তৈরি করতে পারেন। DAX এর মধ্যে measures, calculated columns, filtering, time intelligence, ranking, এবং complex calculations করার জন্য বিভিন্ন ফাংশন রয়েছে। DAX queries এর মাধ্যমে business logic তৈরি করে আপনার রিপোর্টিং কার্যক্ষমতা এবং বিশ্লেষণকে আরও সুনির্দিষ্ট এবং দ্রুত করতে পারেন। Performance optimization, variables, এবং filtering কৌশল অনুসরণ করলে DAX queries আরও কার্যকরী এবং দ্রুত হয়।

Content added By

Dynamic Filters এবং Context Handling

269

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

এই প্রবন্ধে, আমরা Dynamic Filters এবং Context Handling এর ধারণা এবং কীভাবে এগুলি DAX-এ ব্যবহার করা হয় তা বিস্তারিতভাবে আলোচনা করব।


১. Dynamic Filters in DAX

Dynamic Filters ফাংশনগুলি ডেটা বিশ্লেষণের সময় ফিল্টারগুলি runtime এ পরিবর্তন করতে সাহায্য করে। এটি ব্যবহারকারীদের জন্য একটি ইন্টার‌্যাকটিভ এবং কাস্টমাইজড রিপোর্ট তৈরি করতে সহায়ক। Dynamic filters সাধারণত CALCULATE, FILTER, এবং ALLSELECTED ফাংশনগুলির মাধ্যমে ব্যবহৃত হয়।

CALCULATE ফাংশন এবং Dynamic Filters

CALCULATE ফাংশনটি DAX-এ সবচেয়ে গুরুত্বপূর্ণ ফাংশনগুলির মধ্যে একটি, যা একটি কাস্টম ক্যালকুলেশন বা এক্সপ্রেশন তৈরি করতে ব্যবহৃত হয় এবং এর উপর filters প্রয়োগ করতে সাহায্য করে।

Syntax:

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

ব্যবহার:

ধরা যাক, আপনি একটি Sales টেবিলের জন্য বিক্রয় পরিমাণ নির্ধারণ করতে চান এবং আপনি চান যে ProductID এবং Region এর উপর কাস্টম ফিল্টার প্রয়োগ করা হোক:

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

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


FILTER ফাংশন এবং Dynamic Filters

FILTER ফাংশনটি একটি টেবিলের সারি ফিল্টার করার জন্য ব্যবহৃত হয়, যেটি নির্দিষ্ট শর্তে সম্পর্কিত ডেটা নির্বাচন করতে সাহায্য করে।

Syntax:

FILTER(<table>, <condition>)

ব্যবহার:

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

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

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


ALLSELECTED ফাংশন

ALLSELECTED ফাংশনটি dynamic filters তৈরিতে ব্যবহৃত হয়, যা রিপোর্টের ভিজ্যুয়াল বা ব্যবহারকারীর সিলেকশনের উপর ভিত্তি করে ফলাফল পরিবর্তন করে। এটি visual context এবং filter context ব্যবহারে সহায়ক।

Syntax:

ALLSELECTED(<table_or_column>)

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের জন্য Amount এর মোট যোগফল বের করতে চান, তবে আপনি চান যে ফিল্টার করা Region এবং ProductID অনুযায়ী এই যোগফল হিসাব করা হোক:

Total Sales Selected = CALCULATE(SUM(Sales[Amount]), ALLSELECTED(Sales[Region]))

এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধুমাত্র সিলেক্ট করা Region অনুযায়ী ফলাফল হিসাব করা হবে।


২. Context Handling in DAX

Context Handling হল DAX-এর একটি গুরুত্বপূর্ণ ধারণা যা filter context এবং row context-এর মাধ্যমে ডেটার প্রক্রিয়া ও বিশ্লেষণ নিয়ন্ত্রণ করে। DAX ফাংশনগুলির সঠিক ব্যবহার এবং context-এর সঠিক ব্যাখ্যা আপনার বিশ্লেষণ এবং কাস্টম ক্যালকুলেশনগুলি নিখুঁতভাবে তৈরি করতে সাহায্য করবে।

Row Context এবং Filter Context

  • Row Context: এটি একটি iterative context তৈরি করে, যখন আপনি row-by-row calculation করতে চান। এটি সাধারণত calculated columns এবং iterators ফাংশনগুলির মধ্যে ব্যবহৃত হয়।
  • Filter Context: এটি নির্ধারণ করে কোন ডেটা একটি ক্যালকুলেশন বা measure এর জন্য ব্যবহার করা হবে। এটি CALCULATE, ALL, এবং অন্যান্য filter functions দ্বারা নিয়ন্ত্রিত হয়।

Row Context Example:

Profit = Sales[Amount] - Sales[Cost]

এখানে, Profit ক্যালকুলেশনটি Sales টেবিলের প্রতিটি সারির জন্য একটি row context তৈরি করবে, যা Amount এবং Cost কলামগুলির মধ্যে পার্থক্য বের করবে।

Filter Context Example:

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

এটি Sales টেবিলের Amount এর যোগফল বের করবে, তবে শুধু Region "East" এর জন্য। এখানে Sales[Region] কলামের ফিল্টার filter context তৈরি করছে।


৩. Dynamic Filters with User Selections

DAX ব্যবহার করে, আপনি user-selected filters বা slicer selections এর ভিত্তিতে ডেটা কাস্টমাইজ করতে পারেন। ALLSELECTED এবং USERELATIONSHIP ফাংশনগুলি এই পরিস্থিতিতে খুব কার্যকর।

Example: Dynamic Filter with Slicer Selections

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

Dynamic Sales = CALCULATE(SUM(Sales[Amount]), ALLSELECTED(Sales[Region]), ALLSELECTED(Sales[ProductID]))

এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধুমাত্র সিলেক্ট করা Region এবং Product অনুযায়ী।


৪. Use of Variables in Context

Variables (যেমন VAR এবং RETURN) DAX-এ context হ্যান্ডলিংকে আরও সহজ এবং কার্যকরী করে তোলে। এটি আপনার এক্সপ্রেশনগুলোকে অপটিমাইজ এবং পুনঃব্যবহারযোগ্য করে তোলে।

Syntax:

VAR <variable_name> = <expression>
RETURN <expression_using_variable>

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের জন্য Total Sales এবং Discounted Sales এর পার্থক্য বের করতে চান, তাহলে আপনি ভ্যারিয়েবল ব্যবহার করতে পারেন:

Sales Difference = 
VAR TotalSales = SUM(Sales[Amount])
VAR DiscountSales = SUM(Sales[DiscountedAmount])
RETURN TotalSales - DiscountSales

এটি TotalSales এবং DiscountSales এর মধ্যে পার্থক্য বের করবে এবং RETURN এর মাধ্যমে ফলাফল প্রদান করবে।


সারাংশ

Dynamic Filters এবং Context Handling DAX-এ অত্যন্ত গুরুত্বপূর্ণ কৌশল, যা ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে সাহায্য করে। Dynamic Filters ব্যবহার করে আপনি runtime-এ ফিল্টার প্রয়োগ করতে পারেন এবং Context Handling ফাংশনগুলির মাধ্যমে আপনি filter context এবং row context নিয়ন্ত্রণ করতে পারবেন। এটি Power BI এবং Excel-এ interactivity এবং customization যোগ করতে সহায়ক হয়, যাতে আপনার রিপোর্ট এবং বিশ্লেষণ আরও সুনির্দিষ্ট এবং কার্যকরী হয়।

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

Are you sure to start over?

Loading...