Table Functions

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

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

Table Functions সাধারণত FILTER, ALL, VALUES, SUMMARIZE ইত্যাদি ফাংশনকে অন্তর্ভুক্ত করে, যা ডেটার উপরে টেবিল-ভিত্তিক অপারেশন এবং বিশ্লেষণ করতে সাহায্য করে।


DAX Table Functions এর তালিকা

ড্যাক্সের Table Functions বিভিন্ন কাজে ব্যবহৃত হয়, যেমন টেবিলের সারি ফিল্টার করা, টেবিল তৈরি করা, বা টেবিলের ডেটা পরিবর্তন করা। নিচে কিছু সাধারণ Table Functions এবং তাদের ব্যবহার দেখানো হলো:

১. FILTER()

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

Syntax:

FILTER(<table>, <condition>)

ব্যবহার:

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

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

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


২. ALL()

ALL ফাংশনটি একটি টেবিল বা কলামের সমস্ত সারি এবং মান ফিরিয়ে দেয়, ফিল্টার বা কনটেক্সটের বাইরে। এটি সাধারণত filter context রিমুভ করার জন্য ব্যবহৃত হয়, যেমন একটি measure বা calculated column-এর উপরে পুরো ডেটা বিশ্লেষণ করতে।

Syntax:

ALL(<table_or_column>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের সমস্ত Amount এর মান গুণফল গণনা করতে চান এবং filter context মুছে দিতে চান, তাহলে:

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

এটি Sales টেবিলের সমস্ত Amount যোগফল গণনা করবে এবং কোনো ফিল্টার প্রভাবিত হবে না।


৩. VALUES()

VALUES ফাংশনটি একটি টেবিল বা কলামের ইউনিক মানগুলি ফিরিয়ে দেয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি টেবিলের ভিতর থেকে distinct values বের করতে চান।

Syntax:

VALUES(<column>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের ProductID কলামের ইউনিক মানগুলি বের করতে চান:

Unique Products = VALUES(Sales[ProductID])

এই ফাংশনটি Sales টেবিলের ProductID কলামের সমস্ত ইউনিক মান ফিরিয়ে দেবে।


৪. SUMMARIZE()

SUMMARIZE ফাংশনটি একটি টেবিলের সারি গ্রুপ করে এবং নির্দিষ্ট কলামগুলোর ওপর সমষ্টি বা অন্যান্য হিসাব তৈরি করতে সহায়ক। এটি একটি টেবিলের ভিত্তিতে কাস্টম গ্রুপ তৈরি করতে ব্যবহৃত হয়।

Syntax:

SUMMARIZE(<table>, <group_by_column>, <aggregation_column>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের পণ্য অনুসারে বিক্রয় পরিমাণের সমষ্টি দেখতে চান:

Product Sales Summary = SUMMARIZE(Sales, Sales[ProductID], "Total Sales", SUM(Sales[Amount]))

এটি Sales টেবিলের ProductID অনুসারে বিক্রয় পরিমাণের সমষ্টি গড়ে একটি নতুন টেবিল তৈরি করবে।


৫. CROSSJOIN()

CROSSJOIN ফাংশনটি দুটি বা ততোধিক টেবিলের মধ্যে ক্রস প্রোডাক্ট তৈরি করে, অর্থাৎ দুইটি টেবিলের প্রত্যেকটি সারির মধ্যে সমস্ত সম্ভাব্য মিলন তৈরি করে। এটি Cartesian Product হিসেবেও পরিচিত।

Syntax:

CROSSJOIN(<table1>, <table2>)

ব্যবহার:

যেমন, আপনি যদি দুটি টেবিলের সমস্ত ক্রস প্রোডাক্ট বের করতে চান, যেখানে Sales এবং Products টেবিলের মধ্যে সমস্ত সম্ভাব্য মেলবন্ধন তৈরি করতে চান:

Product Sales CrossJoin = CROSSJOIN(Sales, Products)

এটি Sales এবং Products টেবিলের প্রত্যেকটি সারির মধ্যে সমস্ত সম্ভাব্য মিলন তৈরি করবে।


৬. DISTINCT()

DISTINCT ফাংশনটি একটি কলামে বিভিন্ন ইউনিক (distinct) মানগুলি ফিরিয়ে দেয়, অর্থাৎ এটি একটি টেবিলের মধ্যে একক মানের তালিকা তৈরি করতে ব্যবহৃত হয়।

Syntax:

DISTINCT(<table_or_column>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের মধ্যে সমস্ত ইউনিক ProductID কলামের মান বের করতে চান:

Distinct Products = DISTINCT(Sales[ProductID])

এই ফাংশনটি Sales টেবিলের ProductID কলামের সমস্ত ইউনিক মান ফিরিয়ে দেবে।


৭. SELECTCOLUMNS()

SELECTCOLUMNS ফাংশনটি একটি টেবিল তৈরি করতে ব্যবহৃত হয় যা নির্বাচিত কলামগুলির কাস্টম মান বা পুনঃনির্ধারিত নাম প্রদান করে।

Syntax:

SELECTCOLUMNS(<table>, <column_name1>, <expression1>, <column_name2>, <expression2>)

ব্যবহার:

যেমন, আপনি যদি Sales টেবিলের একটি নতুন টেবিল তৈরি করতে চান, যা ProductID এবং Amount কলাম থাকবে:

Selected Sales = SELECTCOLUMNS(Sales, "Product", Sales[ProductID], "Amount", Sales[Amount])

এটি একটি নতুন টেবিল তৈরি করবে, যার মধ্যে ProductID এবং Amount কলাম থাকবে এবং তাদের মান হবে।


সারাংশ

DAX Table Functions খুবই গুরুত্বপূর্ণ এবং ব্যবহারিক, বিশেষ করে যখন আপনি Power BI অথবা Excel-এ জটিল ডেটা বিশ্লেষণ করতে চান। এই ফাংশনগুলি আপনাকে table manipulation, filtering, grouping, এবং aggregations করতে সহায়ক হয়। আপনি FILTER, ALL, VALUES, SUMMARIZE, CROSSJOIN, DISTINCT, এবং SELECTCOLUMNS ফাংশন ব্যবহার করে ডেটার উপর গভীর বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে পারবেন।

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

Content added By

SUMMARIZE এর মাধ্যমে Data Summarize করা

61
61

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

SUMMARIZE ফাংশনটি সাধারণত ডেটার সারি গঠন করে এবং aggregate calculations যেমন মোট, গড়, সর্বোচ্চ, সর্বনিম্ন ইত্যাদি যোগ করতে ব্যবহৃত হয়।


SUMMARIZE ফাংশন এর Syntax

SUMMARIZE ফাংশনের সাধারণ সেন্ট্যাক্স হল:

SUMMARIZE(<table>, <group_by_column1>, <group_by_column2>, ..., <aggregation_column1>, <aggregation_function1>, <aggregation_column2>, <aggregation_function2>, ...)
  • : এটি সেই টেবিল বা এক্সপ্রেশন যা থেকে আপনি সারাংশ তৈরি করতে চান।
  • <group_by_column>: এটি সেই কলাম বা কলামগুলির নাম যা আপনি গ্রুপিং করতে চান।
  • <aggregation_column>: এটি সেই কলাম বা কলামগুলির নাম যার উপর আপনি aggregation (যেমন: SUM, AVERAGE, COUNT) করতে চান।
  • <aggregation_function>: এটি সেই aggregation function যেটি আপনি ব্যবহার করতে চান (যেমন: SUM, AVERAGE, COUNT, MAX, MIN ইত্যাদি)।

SUMMARIZE ফাংশনের ব্যাবহার উদাহরণ

ধরা যাক, আমাদের একটি Sales টেবিল রয়েছে, যেখানে প্রতিটি বিক্রির জন্য ProductID, SalesAmount, এবং Region রয়েছে। আমরা চাই প্রতিটি ProductID এবং Region অনুযায়ী বিক্রয়ের মোট পরিমাণ বের করতে।

Product Sales Summary = SUMMARIZE(
    Sales, 
    Sales[ProductID], 
    Sales[Region], 
    "Total Sales", SUM(Sales[SalesAmount])
)

এখানে:

  • Sales টেবিলটি ব্যবহার করা হয়েছে।
  • Sales[ProductID] এবং Sales[Region] কলামের উপর গ্রুপিং করা হয়েছে।
  • নতুন একটি কাস্টম কলাম "Total Sales" তৈরি করা হয়েছে যা প্রতিটি ProductID এবং Region এর জন্য SalesAmount এর যোগফল দেখাবে।

এই ফর্মুলাটি একটি নতুন টেবিল তৈরি করবে, যা ProductID এবং Region অনুসারে SalesAmount এর যোগফল প্রদান করবে।


আরও Advanced Example: Multiple Aggregations

ধরা যাক, আপনি Sales টেবিলের জন্য ProductID, Region অনুযায়ী বিক্রয়ের মোট পরিমাণ, গড় বিক্রয়, এবং সর্বোচ্চ বিক্রয় পরিমাণ বের করতে চান। এই ক্ষেত্রে, আপনি একাধিক aggregation functions ব্যবহার করতে পারেন।

Product Sales Advanced Summary = SUMMARIZE(
    Sales, 
    Sales[ProductID], 
    Sales[Region], 
    "Total Sales", SUM(Sales[SalesAmount]), 
    "Average Sales", AVERAGE(Sales[SalesAmount]), 
    "Max Sales", MAX(Sales[SalesAmount])
)

এখানে:

  • SUM(Sales[SalesAmount]): মোট বিক্রয়
  • AVERAGE(Sales[SalesAmount]): গড় বিক্রয়
  • MAX(Sales[SalesAmount]): সর্বোচ্চ বিক্রয়

এই ফর্মুলাটি একটি নতুন টেবিল তৈরি করবে, যেখানে ProductID এবং Region অনুসারে মোট বিক্রয়, গড় বিক্রয় এবং সর্বোচ্চ বিক্রয় প্রদর্শিত হবে।


SUMMARIZE vs. SUMMARIZECOLUMNS

SUMMARIZE এবং SUMMARIZECOLUMNS দুটি DAX ফাংশনই ডেটাকে সারাংশে উপস্থাপন করতে ব্যবহৃত হয়। তবে, এই দুইটি ফাংশনের মধ্যে কিছু পার্থক্য রয়েছে:

  • SUMMARIZE: এটি একটি শক্তিশালী ফাংশন যা গ্রুপিং এবং অ্যাগ্রিগেশন একসাথে করতে সাহায্য করে। এটি context transition করতে পারে, অর্থাৎ, অন্যান্য ফাংশনের ভিতরে ব্যবহার করা হলে, তা ফলাফলকে প্রভাবিত করতে পারে।
  • SUMMARIZECOLUMNS: এটি নতুন DAX ফাংশন, যা SUMMARIZE এর উন্নত সংস্করণ এবং filter context-এর সাথে কাজ করতে সহায়ক। এটি প্রক্রিয়া করার সময় আরও দক্ষ এবং পারফরম্যান্স উন্নত হয়।

SUMMARIZECOLUMNS এর সেন্ট্যাক্স:

SUMMARIZECOLUMNS(<group_by_column1>, <group_by_column2>, ..., <aggregation_column1>, <aggregation_function1>, <aggregation_column2>, <aggregation_function2>)

SUMMARIZECOLUMNS সাধারণত SUMMARIZE এর তুলনায় দ্রুত কাজ করে এবং filter context আরও ভালভাবে পরিচালনা করে।


SUMMARIZE এর ব্যবহার এবং উপকারিতা

  • Grouping and Aggregating: SUMMARIZE ফাংশনটি ব্যবহৃত হয় যখন আপনাকে একাধিক কলাম থেকে ডেটা গ্রুপ করে এবং তাদের উপর aggregation করতে হয়।
  • Custom Reporting: এটি কাস্টম রিপোর্ট তৈরি করতে সহায়ক, যেখানে আপনি একাধিক aggregation function প্রয়োগ করতে পারেন।
  • Flexible: একাধিক calculated columns তৈরি করার জন্য ব্যবহার করা যেতে পারে, এবং এটি অন্যান্য DAX ফাংশনের সাথে ব্যবহার করা যায়।

সারাংশ

SUMMARIZE ফাংশনটি DAX-এ একটি শক্তিশালী টুল যা ডেটাকে গ্রুপ করে এবং aggregation করতে ব্যবহৃত হয়। এটি ডেটা বিশ্লেষণে সহায়ক, বিশেষ করে যখন আপনি একটি বা একাধিক কলামের উপর গণনা করতে চান এবং সেই গণনার সাথে শর্ত যুক্ত করতে চান। SUMMARIZE ফাংশনটি time intelligence, financial reporting, এবং business analysis এ অত্যন্ত কার্যকরী, যেখানে আপনি একাধিক মেট্রিক্স বা কাস্টম ক্যালকুলেশন তৈরি করতে পারেন।

Content added By

ADDCOLUMNS, SELECTCOLUMNS এর মাধ্যমে Custom Columns তৈরি করা

83
83

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

এই প্রবন্ধে, আমরা ADDCOLUMNS এবং SELECTCOLUMNS ফাংশন ব্যবহার করে কীভাবে custom columns তৈরি করা যায় তা বিস্তারিত আলোচনা করব।


১. ADDCOLUMNS ফাংশন

ADDCOLUMNS ফাংশনটি একটি বিদ্যমান টেবিলের উপর নতুন কাস্টম কলাম যোগ করতে ব্যবহৃত হয়। এটি সাধারণত SUMMARIZE বা অন্য কোনো টেবিল বা কলামকে প্রসারিত করার জন্য ব্যবহার করা হয়।

Sintax:

ADDCOLUMNS(<table>, <new_column_name1>, <expression1>, [<new_column_name2>, <expression2>], ...)
  • : যে টেবিল বা টেবিল এক্সপ্রেশন থেকে আপনি কাস্টম কলাম তৈরি করতে চান।
  • <new_column_name>: নতুন কলামের নাম।
  • : একটি DAX এক্সপ্রেশন, যা কাস্টম কলামের মান নির্ধারণ করে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিলের জন্য একটি কাস্টম কলাম তৈরি করতে চান, যা SalesAmount এবং Discount কলামের উপর ভিত্তি করে FinalPrice (চূড়ান্ত মূল্য) বের করবে।

Sales with FinalPrice = ADDCOLUMNS(
    Sales,
    "FinalPrice", Sales[SalesAmount] - Sales[Discount]
)

এটি Sales টেবিলের জন্য একটি নতুন FinalPrice কলাম তৈরি করবে, যা SalesAmount এবং Discount এর মধ্যে পার্থক্য প্রদর্শন করবে।

আরেকটি উদাহরণ:

আপনি যদি Sales টেবিলের জন্য একটি নতুন কলাম তৈরি করতে চান, যা SalesAmount এর উপর ভিত্তি করে একটি ক্যাটেগরি নির্ধারণ করবে (যেমন, "High", "Medium", "Low"):

Sales Category = ADDCOLUMNS(
    Sales,
    "Category", IF(Sales[SalesAmount] > 5000, "High", IF(Sales[SalesAmount] > 1000, "Medium", "Low"))
)

এই ফাংশনটি Sales টেবিলের জন্য একটি নতুন Category কলাম তৈরি করবে, যা বিক্রির পরিমাণের ভিত্তিতে High, Medium, বা Low ক্যাটেগরি প্রদান করবে।


২. SELECTCOLUMNS ফাংশন

SELECTCOLUMNS ফাংশনটি একটি টেবিল থেকে নির্দিষ্ট কলাম নির্বাচন করতে এবং তাদের মান পরিবর্তন বা প্রসারিত করতে ব্যবহৃত হয়। এটি একটি নতুন টেবিল তৈরি করে, যেখানে আপনি কেবল কিছু নির্দিষ্ট কলাম এবং তাদের মান নির্বাচন করতে পারেন।

Sintax:

SELECTCOLUMNS(<table>, <new_column_name1>, <expression1>, [<new_column_name2>, <expression2>], ...)
  • : যে টেবিল বা টেবিল এক্সপ্রেশন থেকে আপনি কাস্টম কলাম তৈরি করতে চান।
  • <new_column_name>: নতুন কলামের নাম।
  • : একটি DAX এক্সপ্রেশন, যা কাস্টম কলামের মান নির্ধারণ করে।

ব্যবহার:

ধরা যাক, আপনি Sales টেবিল থেকে কেবল SalesAmount এবং Discount কলাম নির্বাচন করতে চান, এবং সেই সাথে FinalPrice হিসাব করতে চান:

Selected Sales = SELECTCOLUMNS(
    Sales,
    "SalesAmount", Sales[SalesAmount],
    "Discount", Sales[Discount],
    "FinalPrice", Sales[SalesAmount] - Sales[Discount]
)

এটি একটি নতুন টেবিল তৈরি করবে, যেখানে শুধুমাত্র SalesAmount, Discount, এবং FinalPrice কলাম থাকবে।

আরেকটি উদাহরণ:

আপনি যদি Employee টেবিল থেকে EmployeeID এবং EmployeeName কলামগুলি নির্বাচন করতে চান, তবে এটি ব্যবহার করতে পারেন:

Employee Info = SELECTCOLUMNS(
    Employees,
    "ID", Employees[EmployeeID],
    "Name", Employees[EmployeeName]
)

এটি EmployeeInfo নামের একটি নতুন টেবিল তৈরি করবে, যেখানে EmployeeID এবং EmployeeName কলাম থাকবে।


ADDCOLUMNS এবং SELECTCOLUMNS এর মধ্যে পার্থক্য

ফিচারADDCOLUMNSSELECTCOLUMNS
কাজএকটি বিদ্যমান টেবিলে নতুন কলাম যোগ করা।একটি নতুন টেবিল তৈরি করা যেখানে নির্দিষ্ট কলাম নির্বাচিত হয়।
উদ্দেশ্যটেবিলের উপর কাস্টম কলাম যোগ করা।শুধুমাত্র নির্দিষ্ট কলাম এবং তাদের মান নির্বাচন করা।
কলাম নির্বাচনবিদ্যমান টেবিলের কলাম সহ নতুন কলাম তৈরি করে।নির্দিষ্ট কলাম নির্বাচন করে একটি নতুন টেবিল তৈরি করে।
প্রত্যাবর্তনযোগ্য আউটপুটনতুন টেবিলের উপর ভিত্তি করে কাস্টম কলাম ফেরত দেয়।একটি নতুন টেবিল ফেরত দেয়।

সারাংশ

ADDCOLUMNS এবং SELECTCOLUMNS ফাংশনগুলি ড্যাক্সে কাস্টম কলাম তৈরি এবং টেবিল নির্বাচন করতে ব্যবহৃত হয়। ADDCOLUMNS ফাংশনটি বিদ্যমান টেবিলের উপর কাস্টম কলাম যোগ করতে ব্যবহৃত হয়, যখন SELECTCOLUMNS ফাংশনটি নির্দিষ্ট কলাম নির্বাচন করে একটি নতুন টেবিল তৈরি করতে ব্যবহৃত হয়। এই ফাংশনগুলো ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং রিপোর্টিংয়ের জন্য অত্যন্ত কার্যকরী, এবং আপনাকে ডেটা মডেল তৈরি করতে সহায়ক হয়।

Content added By

CROSSJOIN, UNION এর মাধ্যমে Multiple Tables Join করা

92
92

DAX (Data Analysis Expressions) হল একটি এক্সপ্রেশন ভাষা যা Power BI, Power Pivot এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX ফাংশন ব্যবহার করে বিভিন্ন tables থেকে ডেটা একত্রিত করা যায়। CROSSJOIN এবং UNION হল DAX-এর দুটি শক্তিশালী ফাংশন যা multiple tables এর মধ্যে join তৈরি করতে সাহায্য করে। এগুলি বিশেষ করে data modeling এবং complex calculations এর জন্য ব্যবহৃত হয়।

এই প্রবন্ধে, আমরা CROSSJOIN এবং UNION ফাংশন ব্যবহার করে কিভাবে একাধিক টেবিল জয়েন করা যায় তা আলোচনা করব।


CROSSJOIN Function

CROSSJOIN ফাংশন দুটি বা আরও বেশি টেবিলের মধ্যে সমস্ত সম্ভাব্য Cartesian Product তৈরি করে। এটি একে অপরের সব রেকর্ডের কম্বিনেশন তৈরি করে, অর্থাৎ এক টেবিলের সমস্ত রেকর্ডকে অন্য টেবিলের সমস্ত রেকর্ডের সঙ্গে মিলিয়ে নতুন রেকর্ড তৈরি করা হয়।

CROSSJOIN Function এর সিনট্যাক্স:

CROSSJOIN(<Table1>, <Table2>, ...)
  • , , ...: একাধিক টেবিল যা আপনি যুক্ত করতে চান।

ব্যবহার:

ধরা যাক, আপনার দুটি টেবিল রয়েছে: Product এবং Store। আপনি CROSSJOIN ফাংশন ব্যবহার করে এই দুটি টেবিলের মধ্যে Cartesian Product তৈরি করতে চান।

Product_Store_Combination = CROSSJOIN(Products, Stores)

এই ফাংশনটি Products টেবিলের প্রতিটি পণ্যের সাথে Stores টেবিলের প্রতিটি দোকানের সংমিশ্রণ তৈরি করবে, যার ফলে নতুন একটি টেবিল তৈরি হবে যেখানে প্রতিটি পণ্য এবং দোকান যুগ্মভাবে উপস্থিত থাকবে।

CROSSJOIN এর সুবিধা:

  • Combinations তৈরি করার জন্য ব্যবহৃত হয়। যেমন, পণ্য এবং দোকানের প্রতিটি সংমিশ্রণ।
  • Data analysis এবং forecasting করার জন্য কার্যকর।

CROSSJOIN এর সীমাবদ্ধতা:

  • Performance: যদি টেবিলের আকার খুব বড় হয়, তাহলে CROSSJOIN বেশ ধীর হতে পারে, কারণ এটি Cartesian Product তৈরি করে, যা অনেক রেকর্ড তৈরি করতে পারে।
  • Memory consumption: এই ফাংশনটি অনেক বেশি মেমরি ব্যবহার করতে পারে, কারণ এটি সকল সম্ভাব্য রেকর্ডের সংমিশ্রণ তৈরি করে।

UNION Function

UNION ফাংশনটি দুটি বা তার বেশি টেবিলের row-based ডেটা একত্রিত করে। এটি duplicate rows কে মুছে না দিয়ে টেবিলগুলো একত্রিত করে। UNION শুধুমাত্র একই কলামগুলির মধ্যে ডেটা যুক্ত করতে সক্ষম।

UNION Function এর সিনট্যাক্স:

UNION(<Table1>, <Table2>, ...)
  • , , ...: একাধিক টেবিল যেগুলির কলামগুলি মিলে যেতে হবে।

ব্যবহার:

ধরা যাক, আপনার দুটি টেবিল রয়েছে: Sales_Q1 এবং Sales_Q2। আপনি UNION ফাংশন ব্যবহার করে এই দুটি টেবিলকে একত্রিত করতে চান যাতে Q1 এবং Q2 এর বিক্রয় ডেটা একসাথে দেখতে পারেন।

Total_Sales = UNION(Sales_Q1, Sales_Q2)

এই ফাংশনটি Sales_Q1 এবং Sales_Q2 টেবিলের সমস্ত রেকর্ড একত্রিত করবে এবং একটি নতুন টেবিল তৈরি করবে যেখানে দুইটি টেবিলের ডেটা একসঙ্গে থাকবে।

UNION এর সুবিধা:

  • Appending টেবিলের ডেটা একত্রিত করতে ব্যবহৃত হয়।
  • একাধিক similar structure-এর টেবিলের ডেটাকে একত্রিত করা সহজ।
  • Simple aggregation এবং data analysis করতে সহায়ক।

UNION এর সীমাবদ্ধতা:

  • Column Names: দুইটি টেবিলের column names এবং data types মিলে না থাকলে UNION কাজ করবে না। সেক্ষেত্রে আপনাকে SELECTCOLUMNS ফাংশন ব্যবহার করে কলাম নামগুলোকে সমন্বিত করতে হবে।
  • Duplicate Rows: UNION কোনো duplicate rows মুছে না দিয়ে একত্রিত করে, ফলে ডেটা পুনরাবৃত্তি হতে পারে। যদি আপনি duplicate rows মুছে ফেলতে চান, তবে DISTINCT ফাংশন ব্যবহার করতে হবে।

CROSSJOIN এবং UNION এর মধ্যে পার্থক্য

ক্যাটাগরিCROSSJOINUNION
ফাংশনের কাজসমস্ত সম্ভাব্য কম্বিনেশন তৈরি করা।টেবিলের রেকর্ড একত্রিত করা।
ডেটাপ্রতিটি টেবিলের রেকর্ডের কম্বিনেশন তৈরি করে।দুটি টেবিলের রেকর্ড একত্রিত করে।
ফলাফলCartesian Product (সকল সম্ভাব্য সংমিশ্রণ)।রো-ভিত্তিক একত্রিতকরণ (ডুপ্লিকেট রো থাকবে)।
ব্যবহারএকাধিক টেবিলের কম্বিনেশন তৈরি করতে ব্যবহৃত হয়।একাধিক টেবিলের ডেটা একত্রিত করতে ব্যবহৃত হয়।
সীমাবদ্ধতাবড় টেবিলের জন্য পারফরম্যান্স ইস্যু হতে পারে।কলামগুলি মিলে না থাকলে কাজ করবে না।

সারাংশ

CROSSJOIN এবং UNION হল DAX-এর দুটি শক্তিশালী ফাংশন, যা একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন এবং ডেটা একত্রিত করতে সহায়ক। CROSSJOIN টেবিলের মধ্যে সকল সম্ভাব্য Cartesian Product তৈরি করে, যার ফলে একাধিক টেবিলের কম্বিনেশন পাওয়া যায়। অন্যদিকে, UNION একাধিক টেবিলের ডেটা row-wise একত্রিত করে এবং একই কলামগুলির মধ্যে ডেটা সংমিশ্রণ করে। DAX এ এই দুটি ফাংশন ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং মডেলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী টুল।

Content added By
61
61

DAX (Data Analysis Expressions) একটি শক্তিশালী ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS) এ ব্যবহৃত হয়। DAX ব্যবহারকারীদের data modeling এবং analysis এর জন্য বিভিন্ন ফাংশন প্রদান করে। RELATED এবং RELATEDTABLE হল দুটি গুরুত্বপূর্ণ DAX ফাংশন যা Relationships ব্যবহার করে ডেটার মধ্যে সম্পর্ক (relationship) তৈরি এবং বিশ্লেষণ করতে সহায়ক।

এই প্রবন্ধে আমরা RELATED এবং RELATEDTABLE ফাংশন দুটি এবং তাদের কার্যকারিতা সম্পর্কে বিস্তারিত আলোচনা করব।


১. RELATED ফাংশন

RELATED ফাংশনটি দুটি টেবিলের মধ্যে one-to-many সম্পর্কের ক্ষেত্রে ব্যবহৃত হয়। এটি মূলত lookup column হিসেবে কাজ করে, যেখানে একটি টেবিলের মানের উপর ভিত্তি করে অন্য টেবিলের সম্পর্কিত ডেটা ফিরিয়ে আনা হয়।

Syntax:

RELATED(<ColumnName>)
  • : এটি সেই কলামটি যা আপনি লুকআপ করতে চান এবং সম্পর্কিত টেবিল থেকে মান ফিরিয়ে আনতে চান।

ব্যবহার:

ধরা যাক, আপনার কাছে দুটি টেবিল রয়েছে:

  1. Sales টেবিল - যেখানে ProductID, Amount ইত্যাদি তথ্য রয়েছে।
  2. Products টেবিল - যেখানে ProductID, ProductName, Price ইত্যাদি তথ্য রয়েছে।

যদি আপনি Sales টেবিলের জন্য ProductName দেখতে চান, তাহলে আপনি RELATED ফাংশনটি ব্যবহার করতে পারেন:

Product Name = RELATED(Products[ProductName])

এই ফর্মুলাটি Sales টেবিলের ProductID কলামের মানের মাধ্যমে Products টেবিল থেকে সম্পর্কিত ProductName কলামের মান বের করবে।


২. RELATEDTABLE ফাংশন

RELATEDTABLE ফাংশনটি ব্যবহৃত হয় যখন আপনি একটি টেবিলের একাধিক মান অন্য টেবিলের সঙ্গে সম্পর্কিত করতে চান। এটি বিশেষভাবে many-to-one সম্পর্কের জন্য ব্যবহৃত হয়, যেখানে একটি টেবিলের একাধিক রেকর্ড অন্য টেবিলের একক রেকর্ডের সাথে সম্পর্কিত।

Syntax:

RELATEDTABLE(<TableName>)
  • : এটি সেই টেবিলের নাম যেটি আপনি লুকআপ করতে চান এবং সম্পর্কিত মান ফিরিয়ে আনতে চান।

ব্যবহার:

ধরা যাক, আপনি একটি Customers টেবিল এবং একটি Sales টেবিল নিয়ে কাজ করছেন। যদি আপনি Customers টেবিলের প্রতিটি গ্রাহকের জন্য মোট বিক্রয় পরিমাণ বের করতে চান, তাহলে RELATEDTABLE ফাংশনটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

Total Sales by Customer = SUMX(RELATEDTABLE(Sales), Sales[Amount])

এই ফর্মুলাটি Customers টেবিলের প্রতিটি গ্রাহকের জন্য Sales টেবিল থেকে সমস্ত Amount এর যোগফল নির্ধারণ করবে। RELATEDTABLE এখানে Sales টেবিলের সমস্ত সম্পর্কিত রেকর্ড নির্বাচন করে এবং SUMX ফাংশন তাদের মোট পরিমাণ বের করবে।


৩. RELATED এবং RELATEDTABLE এর মধ্যে পার্থক্য

  • RELATED: এটি একটি কলামকে লুকআপ করে এবং সম্পর্কিত টেবিল থেকে একক মান ফিরিয়ে আনে, যা one-to-many সম্পর্কের জন্য ব্যবহৃত হয়।
  • RELATEDTABLE: এটি একটি টেবিলকে লুকআপ করে এবং সম্পর্কিত টেবিলের একাধিক রেকর্ড ফিরিয়ে আনে, যা many-to-one সম্পর্কের জন্য ব্যবহৃত হয়।

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

ধরা যাক, আপনার কাছে দুটি টেবিল রয়েছে:

  1. Customers টেবিল, যেখানে CustomerID, CustomerName ইত্যাদি তথ্য রয়েছে।
  2. Sales টেবিল, যেখানে SalesID, CustomerID, Amount ইত্যাদি তথ্য রয়েছে।

১. RELATED ফাংশন ব্যবহার:

আপনি যদি Sales টেবিলের মাধ্যমে প্রতিটি বিক্রয়ের সাথে সম্পর্কিত CustomerName দেখতে চান, তাহলে এই ফাংশনটি ব্যবহার করা হবে:

Customer Name = RELATED(Customers[CustomerName])

এই ফর্মুলাটি Sales টেবিলের প্রতিটি রেকর্ডের জন্য CustomerID কলামের মাধ্যমে Customers টেবিলের CustomerName বের করবে।

২. RELATEDTABLE ফাংশন ব্যবহার:

ধরা যাক, আপনি Customers টেবিলের প্রতিটি গ্রাহকের জন্য মোট বিক্রয় পরিমাণ দেখতে চান। এর জন্য RELATEDTABLE ব্যবহার করা হবে:

Total Sales by Customer = SUMX(RELATEDTABLE(Sales), Sales[Amount])

এই ফর্মুলাটি Customers টেবিলের প্রতিটি গ্রাহকের জন্য Sales টেবিলের সমস্ত বিক্রয় পরিমাণ যোগ করবে।


সারাংশ

RELATED এবং RELATEDTABLE ফাংশন দুটি DAX-এর শক্তিশালী টুল যা Relationships এর মাধ্যমে টেবিলগুলির মধ্যে সংযোগ স্থাপন করতে সাহায্য করে। RELATED ব্যবহার করে আপনি one-to-many সম্পর্কের মধ্যে একক মান অ্যাক্সেস করতে পারেন, এবং RELATEDTABLE ব্যবহার করে আপনি many-to-one সম্পর্কের মধ্যে একাধিক রেকর্ড অ্যাক্সেস করতে পারেন। এই ফাংশনগুলি ডেটার মধ্যে সম্পর্ক তৈরি করে, যা আপনাকে আরও বিস্তারিত বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে সহায়ক হতে পারে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion