Course: Power BI A-Z: ডেটা সায়েন্সের জন্য কার্যকরী Power BI প্রশিক্ষণ
# কোর্সে স্বাগতম! এই কোর্সে আমরা Power BI-র DAX (Data Analysis Expressions) গভীরভাবে শিখব এবং বাস্তব উদাহরণে প্রয়োগ করব। DAX হলো একটি শক্তিশালী সূত্রভিত্তিক ভাষা যা ডেটা মডেলিং, ক্যালকুলেটেড কলাম এবং মেজার তৈরিতে ব্যবহৃত হয়। প্রথম ধাপে আমরা ক্যালেন্ডার টেবিল তৈরি, SUMMARIZECOLUMNS ব্যবহার করে ডেটা সারসংক্ষেপ এবং CALCULATETABLE/CALCULATE-এর মৌলিক কনসেপ্ট শিখব। উদাহরণস্বরূপ CALENDAR ও SUMMARIZECOLUMNS দিয়ে মাসভিত্তিক বিক্রয় ও গড় মুনাফা বের করার কৌশল দেখানো হবে। এছাড়া DAX প্রশ্ন (EVALUATE) ও ORDER BY ও START AT ক্লজ কীভাবে ব্যবহার হয় তা অনুশীলনের মাধ্যমে শেখানো হবে। আমরা দেখবো কিভাবে গণনা করা কলাম ও মেজার পার্থক্য করে এবং কখন কোনটি ব্যবহার করবেন। ড্রিলিং ডাউন, ফিল্টার, স্লাইসার ও ডেটা ভিজ্যুয়ালাইজেশনে রঙ ও ফরম্যাটিং প্রয়োগ করা হবে। কাস্টম ভিজ্যুয়াল ও মানচিত্র, ট্রিম্যাপ, স্ক্যাটার প্লট, এলাকা ও ডোনাট চার্ট তৈরি করার ধাপ-প্রত্যেকটি অনুশীলন করা হবে। টাইমসিরিজ বিশ্লেষণ, এগ্রিগেশন ও গ্রানুলারিটি সম্পর্কে বাস্তব কেস স্টাডি থাকবে। আমরা ডুপ্লিকেট মান, বিভিন্ন ধরনের JOIN (LEFT, RIGHT, INNER, OUTER), এবং একাধিক ক্ষেত্রের উপর যোগদান কিভাবে করবেন তা উদাহরণসহ দেখব। প্রতিটি ক্লাসে হোমওয়ার্ক ও প্রাকটিস টাস্ক থাকবে যাতে আপনি নিজের ডেটাসেট নিয়ে কাজ করে দক্ষতা অর্জন করতে পারেন। কোর্স শেষে একটি ছোট প্রজেক্ট থাকবে যেখানে বার্ষিক পুরস্কার বা ব্যবসায়িক সিদ্ধান্তের জন্য ডেটা বিশ্লেষণ উপস্থাপন করতে হবে। আগ্রহী শিক্ষার্থীরা CSV/Excel ডেটা লোড, মডেলিং ও DAX কুয়েরি লিখে নিজের রিপোর্ট তৈরি করবে। ধন্যবাদ — প্রস্তুতি নিয়ে আসুন, পরবর্তী ক্লাসে আমরা CALCULATE ও FILTER এর গভীরে প্রবেশ করব।
Lesson
Topic: Power BI DAX — পরিচিতি, ক্যালেন্ডার টেবিল, SUMMARIZECOLUMNS, এবং DAX কুয়েরি
Learning Outcomes
- Power BI-তে DAX-এর ভূমিকা এবং ব্যবহার বোঝা।
- ক্যালেন্ডার (Dim_Calendar) ক্যালকুলেটেড টেবিল তৈরি করা শিখবে।
- SUMMARIZECOLUMNS ব্যবহার করে সারসংক্ষেপ টেবিল তৈরি ও বিশ্লেষণ করা পারবে।
- DAX কুয়েরি (EVALUATE), ORDER BY, START AT কলগুলোর ব্যবহার পারবে।
- গণনা করা কলাম বনাম মেজার (Calculated Column vs Measure) পার্থক্য ব্যাখ্যা করতে পারবে।
Conceptual Explanation
What is DAX?
DAX (Data Analysis Expressions) একটি সূত্রভিত্তিক ভাষা যা Power BI, Power Pivot ও SSAS Tabular মডেলে ব্যবহৃত হয়। এটি রো-ভিত্তিক ক্যালকুলেশন এবং কনটেক্সট-নির্ভর অ্যাগ্রিগেশন জন্য ডিজাইন করা।
Key Patterns
- Calculated table: Dim_Calendar = CALENDAR(MIN(...), MAX(...)) — টাইমস্যাপোর্টেড বিশ্লেষণের ভিত্তি।
- Aggregation & grouping: SUMMARIZECOLUMNS(...) — গ্রুপ বাই কলাম এবং মেজার প্রদান।
- Querying model: EVALUATE ... ORDER BY ... START AT — টেবিল পঠন ও সাজানো।
- Measures: SUM(), AVERAGE(), DIVIDE() — রিপোর্টে ডায়নামিক অগ্রিগেট।
Representative Examples
DAX
Dim_Calendar = CALENDAR(MIN('Fact_StrategyPlan'[Datekey]), MAX('Fact_StrategyPlan'[Datekey]))
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
FILTER( VALUES('Product'[Category]), [Category] = "Clothing" ),
"Orders", [Orders],
"Avg Profit per Order", DIVIDE( [Total Sales Profit], [Orders] )
)
Important Notes
- CALENDAR() ব্যবহার করার আগে আপনার রো টেবিলের DateKey কলাম নাল/ফরম্যাট চেক করুন।
- SUMMARIZECOLUMNS ফাংশনে মাপ/মেজার ব্যবহার করলে মেজারগুলো মডেলে ডিফাইনেড থাকা উচিৎ।
- DAX কুয়েরি ORDER BY-তে যে কলাম ব্যবহার করবেন তা অবশ্যই আউটপুটে অন্তর্ভুক্ত থাকতে হবে।
- START AT ক্লজ শুধুমাত্র DAX Query (EVALUATE) প্রেক্ষাপটে কাজ করে এবং UI-র স্লাইসার বদলে না।
- গণনা করা কলাম সারি-ভিত্তিক (persistent) হয়; মেজার run-time এ ভ্যালু রিটার্ন করে এবং কনটেক্সট-নির্ভর।
Reference Table
| Concept | Syntax / Example | Purpose |
|---|---|---|
| Calendar | |
Time intelligence base table |
| Summarize | |
Group & aggregate rows |
| DAX Query | |
Table result for analysis / export |
Exercises
True / False
- CALENDAR() returns a calculated table covering a date range. (True / False)
- SUMMARIZECOLUMNS ignores measures defined in the model. (True / False)
Answer
True — CALENDAR(MIN(...),MAX(...)) creates a date table between the two bounds.
Answer
False — SUMMARIZECOLUMNS can reference existing measures; use proper context to avoid ambiguity.
Fill in the Blanks
- To create a date table from Fact_StrategyPlan use:
Dim_Calendar = ________(MIN('Fact_StrategyPlan'[Datekey]), MAX('Fact_StrategyPlan'[Datekey])) - Use
_______to compute a division safely (avoid divide-by-zero) in DAX.
Answer
CALENDAR
Answer
DIVIDE()
Multiple Choice Questions (MCQ)
- Which DAX function groups rows and returns a table of aggregates?
- A. FILTER
- B. SUMMARIZECOLUMNS
- C. CALCULATE
- D. RELATEDTABLE
Answer
B. SUMMARIZECOLUMNS
- Which clause can you use in a DAX query to start listing at a specific row?
- A. OFFSET
- B. START AT
- C. SKIP
- D. LIMIT
Answer
B. START AT
Matching
Match the term (left) with purpose (right).
| Term | Purpose |
|---|---|
| CALENDAR() | Creates a date table across a range |
| SUMMARIZECOLUMNS() | Group & aggregate by columns |
| EVALUATE | Return a table result from model |
Answer
See the right column — CALENDAR = date table, SUMMARIZECOLUMNS = grouping, EVALUATE = execute query to return table.
Descriptive
Explain difference between Calculated Column and Measure in two sentences.
Answer
Calculated Column is persisted per row in a table and computed during model processing; it is row-context oriented. Measure is evaluated at query runtime in the current filter/context and returns aggregated results (no storage per row).
Creative
Design a simple KPI using DAX that shows Average Profit per Order for "Clothing" category.
Answer
Define a measure e.g. Avg Profit per Order = DIVIDE([Total Sales Profit], [Orders]) and apply filter or use CALCULATE: Avg Profit Clothing = CALCULATE([Avg Profit per Order], 'Product'[Category] = "Clothing").
Activities
- In Power BI Desktop: load a CSV, create Dim_Calendar, and build a month-by-category summary with SUMMARIZECOLUMNS.
- Create two measures: Total Sales and Avg Profit, add an Area chart and highlight "Clothing".
Vocabulary
- CALENDAR, SUMMARIZECOLUMNS, EVALUATE, DIVIDE, CALCULATE, FILTER, START AT
- Calculated Column vs Measure, Aggregation, Granularity, Context
Homework
- Build Dim_Calendar from your dataset and create a table showing monthly Orders and Avg Profit per Order for Clothing. Export the DAX query you used.
- Write one paragraph summarizing when to use a calculated column instead of a measure.
Practice Task
Create a report page with:
- Area chart showing Total Sales over time.
- Donut chart by Product Category (Total Sales).
- Slicer for Year and a table that starts at a specific sales order using a DAX query (use START AT for exploration).
Answer / Hints
Hint: define measures first: Total Sales = SUM('Fact_Sales'[Sales Amount]). Use Dim_Calendar[Year] as slicer. For query exploration use DAX Studio or “New table” with EVALUATE to preview results.
Further reading: Microsoft Docs — DAX reference; Practice: DAX Studio for query profiling; Next lesson: CALCULATE & FILTER advanced patterns.