Top 30 intermediate Power BI interview questions
Power BI Intermediate Interview Questions 🟡
Top 30 intermediate Power BI interview questions — DAX deep dive, Row Context vs Filter Context, CALCULATE mastery, Time Intelligence, Power Query advanced, RLS, Aggregations, Optimization aur real-world scenarios. English answers with Hinglish explanations aur Pro Tips. Data Insights par.
📑 Is Blog Mein Kya Sikhenge:
- 🟡 Q1–Q6: DAX Deep Dive — CALCULATE, Context, Iterators
- 🟡 Q7–Q12: Time Intelligence & Advanced DAX
- 🟡 Q13–Q18: Data Modeling Advanced — RLS, Snowflake, Inactive Relationships
- 🟡 Q19–Q24: Power Query Advanced & Performance
- 🟡 Q25–Q30: Report Design, Gateway, Optimization & Real-World
- 💡 Pro Tips: Interview mein exactly kya bolna chahiye
🟡 Category 1: DAX Deep Dive (Q1–Q6)
Q1: What is the difference between Row Context and Filter Context in DAX?
Answer: Row Context refers to the current row being evaluated in a row-by-row operation — it exists automatically in Calculated Columns and inside iterator functions like SUMX, AVERAGEX, MAXX. Filter Context refers to the set of active filters that determine which subset of data a measure operates on — it comes from slicers, visual filters, page filters, and CALCULATE. Row Context iterates rows, Filter Context filters tables. CALCULATE can convert Row Context into Filter Context using context transition.
🎯 Explain: Row Context = "abhi main kis row pe khada hoon". Calculated Column mein har row ka apna context hota hai — jaise Sales[Quantity] * Sales[Price] row by row calculate hota hai. Filter Context = "abhi kaunse filters active hain". Measure mein slicer mein 2023 select hai, visual mein North region hai — toh Filter Context hai {Year=2023, Region=North}. Key concept: CALCULATE Row Context ko Filter Context mein convert kar sakta hai — isse "Context Transition" kehte hain. Yeh DAX ka sabse important concept hai — interview mein yeh samjha sako toh strong impression padega.
Q2: What is Context Transition in DAX?
Answer: Context Transition occurs when CALCULATE converts the existing Row Context into an equivalent Filter Context. When a measure is called inside an iterator function (like SUMX), and that measure internally uses CALCULATE, the current row's values become filters. This means each row's column values are applied as filters to the data model during evaluation. Context Transition is automatic when measures are used inside iterators — it is the bridge between Row Context and Filter Context.
🎯 Explain: Maan lo SUMX Sales table pe iterate kar raha hai aur har row pe ek measure call ho raha hai. Jab measure ke andar CALCULATE hai — toh current row ke column values (ProductID=101, Region=North) automatically filter ban jaate hain. Yeh hai Context Transition — row ki identity filter ban gayi. Example: SUMX(Products, [Total Sales]) — har product ke liye Total Sales measure evaluate hoga — internally product ka filter lag jayega. Beginners isse confuse hote hain — lekin samajh aaye toh DAX master ho jaoge.
Q3: What is the difference between ALL, ALLEXCEPT, and REMOVEFILTERS?
Answer: ALL removes all filters from a table or specified columns — returns all rows ignoring any active filters. ALLEXCEPT removes all filters from a table EXCEPT the columns you specify — those columns retain their filters. REMOVEFILTERS is functionally identical to ALL when used as a CALCULATE modifier — it is an alias introduced for clarity. Use ALL/REMOVEFILTERS to clear all filters, ALLEXCEPT to keep specific dimension filters while clearing others.
🎯 Explain: ALL = sab filters hata do — CALCULATE(SUM(Sales[Amount]), ALL(Sales)) — poore Sales table ka total, slicer kuch bhi ho. ALLEXCEPT = specified columns ke filters rakho, baaki sab hata do — CALCULATE(SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Region])) — sirf Region ka filter active rahega, baaki sab clear. REMOVEFILTERS = ALL ka naya naam hai — Microsoft ne readability ke liye introduce kiya. Interview mein teeno ka difference pata hona chahiye — especially ALL vs ALLEXCEPT.
Q4: What are Iterator functions in DAX? Give examples.
Answer: Iterator functions evaluate an expression row by row across a table and then aggregate the results. They end with 'X' — SUMX, AVERAGEX, COUNTX, MAXX, MINX, RANKX, CONCATENATEX. Each takes a table as the first argument and an expression as the second. Unlike simple aggregation functions (SUM, COUNT) that work on a single column, iterators can perform calculations across multiple columns at the row level before aggregating.
🎯 Explain: Iterator functions "X" se khatam hote hain — SUMX, AVERAGEX, MAXX. Yeh row by row jaate hain table mein, har row pe formula lagaate hain, phir sab ka result aggregate karte hain. Example: SUMX(Sales, Sales[Qty] * Sales[Price]) — har row mein Qty × Price calculate karo, phir sab ka total karo. Normal SUM sirf ek column ka total karta hai — SUMX do columns ka calculation karke total karta hai. Jab bhi row-level formula lagana ho pehle aur phir aggregate karna ho — iterator use karo.
Q5: What is the DIVIDE function and why should you use it instead of the / operator?
Answer: DIVIDE is a DAX function that performs division and handles division-by-zero gracefully. Syntax: DIVIDE(numerator, denominator, alternate_result). If the denominator is zero or BLANK, DIVIDE returns the alternate_result (default is BLANK) instead of throwing an error. The / operator would return Infinity or error when dividing by zero. DIVIDE is the best practice for all percentage calculations, growth rates, and KPIs in Power BI.
🎯 Explain: Direct division (/) mein agar denominator zero ho toh error ya Infinity aata hai — visual ugly dikhta hai. DIVIDE(100, 0, 0) simply 0 return karega — clean aur professional. Har YoY %, MoM %, market share calculation mein DIVIDE use karo. Third argument optional hai — agar nahi do toh BLANK return karta hai. Interview mein "I always use DIVIDE instead of / for safe division" — yeh best practice answer hai.
Q6: What is the VAR keyword in DAX and why is it important?
Answer: VAR (Variable) allows you to store intermediate calculation results and reuse them within a DAX expression. VAR is followed by RETURN which specifies the final output. Benefits: (1) Readability — meaningful variable names make complex formulas easy to understand. (2) Performance — expressions stored in VAR are evaluated only once even if referenced multiple times. (3) Debugging — you can temporarily change RETURN to any VAR to check intermediate values. VAR is considered a best practice in professional DAX writing.
🎯 Explain: VAR ek variable hai DAX mein — intermediate result store karo aur baar baar use karo. Example: VAR CurrentSales = SUM(Sales[Amount]), VAR LastYear = CALCULATE(...), RETURN DIVIDE(CurrentSales - LastYear, LastYear, 0). Bina VAR ke same CALCULATE do baar likhna padta — slow aur messy. VAR se: readable hai (naam se pata chalta hai kya store hai), fast hai (ek baar calculate, multiple baar use), debug easy hai (RETURN change karke check karo). Professional DAX mein VAR standard hai.
🟡 Category 2: Time Intelligence & Advanced DAX (Q7–Q12)
Q7: What are Time Intelligence functions in DAX? Name the key ones.
Answer: Time Intelligence functions in DAX perform calculations over time periods — comparing current periods with previous ones, calculating cumulative totals, and analyzing trends. Key functions include: TOTALYTD, TOTALQTD, TOTALMTD (cumulative totals), SAMEPERIODLASTYEAR (year-over-year), DATEADD (custom period shift), PREVIOUSMONTH/QUARTER/YEAR, PARALLELPERIOD, DATESYTD/QTD/MTD (date filters), DATESBETWEEN, and DATESINPERIOD (custom ranges). All require a proper Date Table with continuous dates.
🎯 Explain: Time Intelligence functions time ke saath data compare karte hain — "is saal vs pichle saal", "is quarter abhi tak kitna", "last 3 months rolling average". Important ones: TOTALYTD (year to date), SAMEPERIODLASTYEAR (pichle saal same period), DATEADD (flexible time shift), DATESINPERIOD (rolling window). Sab CALCULATE ke andar use hote hain aur Date Table mandatory hai — bina Date Table ke koi bhi Time Intelligence function kaam nahi karega.
Q8: What is a Date Table and why is it required for Time Intelligence?
Answer: A Date Table is a dedicated table containing a continuous, unbroken sequence of dates covering the full range of your data. It is required because Time Intelligence functions need a complete calendar without gaps to accurately calculate periods like YTD, QTD, and period comparisons. The Date Table must be marked as a Date Table in Power BI and connected to the Fact Table through a relationship. It should contain columns like Date, Year, Month Number, Month Name, Quarter, Week Number for filtering and grouping.
🎯 Explain: Sales Table mein sirf woh dates hain jab sale hui — kuch din missing hain. Time Intelligence ko har din ki date chahiye — gaps nahi chalenge. Isliye alag Date Table banate hain — CALENDAR(DATE(2023,1,1), DATE(2023,12,31)) — 365 din continuous. Mark as Date Table karo, Sales Table se relate karo Order Date ke through. Bina yeh setup ke TOTALYTD, SAMEPERIODLASTYEAR sab BLANK return karenge. Yeh Power BI ka fundamental setup hai.
Q9: What is the difference between TOTALYTD and DATESYTD?
Answer: TOTALYTD is a shortcut function that directly calculates the year-to-date total of an expression — it internally combines CALCULATE and DATESYTD. DATESYTD only returns a table of dates from the start of the year to the last date in the current filter context — it must be used inside CALCULATE manually. The advantage of DATESYTD is flexibility — you can add additional filters alongside it inside CALCULATE, like Region or Product filters. TOTALYTD is simpler for basic YTD calculations.
🎯 Explain: TOTALYTD = all-in-one shortcut — TOTALYTD(SUM(Sales[Amount]), DateTable[Date]) — directly answer deta hai. DATESYTD = sirf dates return karta hai — CALCULATE(SUM(Sales[Amount]), DATESYTD(DateTable[Date])) — manually CALCULATE ke andar likhna padta hai. Advantage: DATESYTD ke saath CALCULATE mein extra filters add kar sakte ho — jaise Region="North" ya Product="Laptop". TOTALYTD mein yeh directly possible nahi. Simple YTD → TOTALYTD. YTD with extra filters → DATESYTD.
Q10: How do you calculate YoY (Year over Year) Growth % in DAX?
Answer: YoY Growth % is calculated by comparing current period sales with the same period last year. Best practice is to use VAR for readability and DIVIDE for safe division. Formula: VAR CurrentSales = SUM(Sales[Amount]), VAR LastYearSales = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(DateTable[Date])), RETURN IF(ISBLANK(LastYearSales), BLANK(), DIVIDE(CurrentSales - LastYearSales, LastYearSales, 0)). The ISBLANK check ensures BLANK is returned when no previous year data exists instead of showing misleading 0%.
🎯 Explain: YoY % = (Current - LastYear) / LastYear. DAX mein: VAR CY = SUM(Sales[Amount]), VAR LY = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR(DateTable[Date])), RETURN DIVIDE(CY-LY, LY, 0). VAR use karo taaki LY do baar calculate na ho. DIVIDE use karo taaki zero error na aaye. ISBLANK check karo taaki missing data pe BLANK aaye, galat 0% nahi. Yeh professional DAX hai — interview mein yeh formula likhke dikhao toh strong impression padega.
Q11: What is the difference between DATEADD and SAMEPERIODLASTYEAR?
Answer: Both shift dates backward in time, but DATEADD is more flexible. SAMEPERIODLASTYEAR always shifts exactly one year back — it has no parameters for interval or number of periods. DATEADD allows shifting by any number of days, months, quarters, or years in either direction (positive or negative). DATEADD(-1, YEAR) gives the same result as SAMEPERIODLASTYEAR in most cases. Use SAMEPERIODLASTYEAR for simple one-year comparisons (readable), DATEADD for custom period shifts like last 3 months or 2 quarters back.
🎯 Explain: SAMEPERIODLASTYEAR = sirf ek saal peeche — fixed. DATEADD = flexible time machine — kitne bhi days, months, quarters, years, aage ya peeche. DATEADD(-1, YEAR) = SAMEPERIODLASTYEAR — same result. Lekin DATEADD(-3, MONTH) ya DATEADD(-2, QUARTER) jaise custom shifts sirf DATEADD se possible hain. Rule: simple YoY → SAMEPERIODLASTYEAR (naam se clear hai). Custom shifts → DATEADD. Interview mein dono ka difference aur use case batao.
Q12: What is the difference between PARALLELPERIOD and DATEADD?
Answer: Both shift dates by specified intervals, but they handle partial periods differently. DATEADD shifts each individual date by the specified interval — if March 15 is selected and you shift -1 MONTH, you get February 15. PARALLELPERIOD always returns a complete parallel period — if any date in March is selected and you shift -1 MONTH, you get the entire month of February (1st to 28th). Use DATEADD for exact date shifts, PARALLELPERIOD for complete period comparisons like full month vs full month.
🎯 Explain: DATEADD = exact shift — har date ko individually shift karta hai. March 15 selected, -1 MONTH → February 15. PARALLELPERIOD = complete period — March mein koi bhi date ho, -1 MONTH → poora February (1-28). Difference tab dikhta hai jab partial period selected ho. Dashboard mein "last complete month vs this month" chahiye → PARALLELPERIOD. Exact date-level comparison chahiye → DATEADD. Interview mein yeh nuance batana advanced knowledge dikhata hai.
🟡 Category 3: Data Modeling Advanced (Q13–Q18)
Q13: What is Row-Level Security (RLS) in Power BI?
Answer: Row-Level Security (RLS) is a feature that restricts data access at the row level for specific users. It allows you to define DAX filter expressions that control which rows of data a user can see in reports and dashboards. RLS is configured in Power BI Desktop by creating Roles with DAX filter rules, and then assigning users to those roles in Power BI Service. For example, a sales manager for the North region can be restricted to see only North region data.
🎯 Explain: RLS matlab different users ko different data dikhana. North ka manager sirf North ka data dekhe, South ka manager sirf South ka. Desktop mein Roles banate hain — Modeling tab → Manage Roles → DAX filter lagao jaise [Region] = "North". Phir Service pe us role mein specific users add karo. Report same rahta hai, data user ke hisaab se filter ho jaata hai automatically. Security ke liye bahut important hai — especially jab ek report bahut saare logon ko share karni ho.
Q14: What is the difference between Static RLS and Dynamic RLS?
Answer: Static RLS uses hardcoded values in the DAX filter — for example, [Region] = "North". Each role has fixed filter values and you create separate roles for each segment. Dynamic RLS uses functions like USERPRINCIPALNAME() or USERNAME() to automatically filter data based on the logged-in user's identity. A mapping table links user emails to their allowed data segments. Dynamic RLS is more scalable — one role handles all users instead of creating multiple static roles.
🎯 Explain: Static RLS = hardcoded — har region ke liye alag role banao — "North Role" mein [Region]="North", "South Role" mein [Region]="South". 10 regions hain toh 10 roles. Dynamic RLS = smart — ek mapping table banao (Email, Region), phir DAX filter mein USERPRINCIPALNAME() use karo — logged-in user ka email match hoga mapping table se aur automatically uski region ka data dikhega. Ek hi role se sab handle. Dynamic RLS scalable aur maintainable hai — real-world projects mein yahi use hota hai.
Q15: What is a Snowflake Schema and how is it different from Star Schema?
Answer: A Snowflake Schema is a normalized version of the Star Schema where dimension tables are further broken down into sub-dimension tables. For example, instead of a single Product dimension with Category included, you have a Product table linked to a separate Category table. Star Schema has denormalized dimensions (fewer tables, easier), Snowflake has normalized dimensions (more tables, less redundancy). Power BI performs better with Star Schema — fewer joins, simpler DAX, faster queries.
🎯 Explain: Star Schema mein ek Product table mein Category bhi hoti hai — sab ek jagah. Snowflake mein Product table alag, Category table alag — Product se Category ka relationship hota hai. Snowflake mein redundancy kam hoti hai (database normalized hai) lekin Power BI ke liye Star Schema better hai — kam tables, simple relationships, fast DAX. Interview mein "I prefer Star Schema for Power BI because it gives better performance and simpler DAX" — yeh perfect answer hai.
Q16: What are Inactive Relationships in Power BI and when do you use them?
Answer: Power BI allows only one active relationship between any two tables at a time. If you need multiple relationships (for example, Sales table has both OrderDate and ShipDate connected to DateTable), only one can be active (shown as solid line). The other becomes inactive (shown as dashed line). To use the inactive relationship in a measure, you use the USERELATIONSHIP function inside CALCULATE — CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[ShipDate], DateTable[Date])).
🎯 Explain: Ek scenario — Sales table mein OrderDate bhi hai aur ShipDate bhi. Dono DateTable se relate karne hain. Lekin Power BI sirf ek active relationship allow karta hai dono tables ke beech. Toh OrderDate active banao (solid line), ShipDate inactive (dashed line). Jab ShipDate pe analysis chahiye — CALCULATE mein USERELATIONSHIP(Sales[ShipDate], DateTable[Date]) use karo — temporarily inactive relationship activate ho jayegi us measure ke liye. Real-world mein bahut common pattern hai.
Q17: What is the difference between RELATED and RELATEDTABLE functions?
Answer: RELATED fetches a single value from a related table on the "one" side of a one-to-many relationship — used in the "many" side table. For example, in Sales table, RELATED(Products[ProductName]) brings the product name from the Products table. RELATEDTABLE returns an entire table of related rows from the "many" side — used in the "one" side table. For example, in Products table, RELATEDTABLE(Sales) returns all sales rows for that product. RELATED returns a scalar value, RELATEDTABLE returns a table.
🎯 Explain: RELATED = many side se one side ki value lao. Sales table mein ho aur Product ka naam chahiye → RELATED(Products[Name]) — ek value aayegi. RELATEDTABLE = one side se many side ki saari rows lao. Products table mein ho aur us product ki saari sales chahiye → RELATEDTABLE(Sales) — poori table aayegi. RELATED ek value deta hai — Calculated Column mein use hota hai. RELATEDTABLE table deta hai — COUNTROWS ya SUMX ke saath use hota hai.
Q18: What is a Many-to-Many relationship and how do you handle it?
Answer: A Many-to-Many (M:M) relationship exists when duplicate values appear in the connecting columns of both tables — for example, Students and Courses where one student takes many courses and one course has many students. In Power BI, M:M can be handled by: (1) Creating a Bridge Table (junction table) that converts M:M into two 1:M relationships. (2) Using Power BI's native M:M relationship feature with cross-filter direction set to Both. Bridge Table approach is preferred for accuracy and performance.
🎯 Explain: Many-to-Many tab hota hai jab dono sides pe duplicates hain. Solution 1: Bridge Table banao — ek intermediate table jo unique combinations rakhti hai. Students-Courses ke beech StudentCourseMapping table banao — Student 1:M Mapping, Course 1:M Mapping. Solution 2: Power BI ka native M:M feature — direct M:M relationship create karo with "Both" cross-filter. Lekin Bridge Table approach zyada reliable aur accurate hai. Interview mein Bridge Table approach batao — professional solution dikhta hai.
🟡 Category 4: Power Query Advanced & Performance (Q19–Q24)
Q19: What is Query Folding in Power Query?
Answer: Query Folding is the ability of Power Query to push transformation steps back to the source database as native SQL queries. When query folding occurs, the database performs the filtering, sorting, and aggregation instead of Power Query doing it locally. This significantly improves performance and reduces memory usage. Query Folding works with relational databases (SQL Server, Oracle) but not with flat files (CSV, Excel). You can check if a step supports folding by right-clicking the step — if "View Native Query" is available, folding is active.
🎯 Explain: Query Folding matlab Power Query ke steps ko SQL query mein convert karke database pe bhej dena. Jaise tum Power Query mein filter lagao "Year = 2023" — agar folding active hai toh yeh SQL mein WHERE Year = 2023 ban jayega aur database sirf filtered data bhejega. Agar folding nahi hai toh poora data download hoga aur locally filter hoga — slow. SQL databases ke saath kaam karta hai, CSV/Excel ke saath nahi. Steps pe right-click → "View Native Query" option dikhe toh folding ho rahi hai.
Q20: What is the difference between Merge Queries and Merge Queries as New?
Answer: Merge Queries adds the merged result directly to the existing (primary) query — modifying it in place. Merge Queries as New creates a brand new separate query with the merged result, keeping both original queries intact and unchanged. "As New" is generally preferred because it preserves the original tables and creates a clean, traceable data flow. It also helps in debugging since you can see the original and merged queries independently.
🎯 Explain: Merge Queries = existing table mein hi merged data add ho jayega — original table modify hoti hai. Merge Queries as New = ek nayi table banega merged result ke saath — dono original tables safe rehti hain. "As New" better hai kyunki: (1) original tables untouched rehti hain, (2) debugging easy hota hai — separately check kar sakte ho, (3) data flow traceable hota hai. Real projects mein hamesha "as New" use karo.
Q21: What types of Joins are available in Power Query Merge?
Answer: Power Query supports six types of joins in Merge: (1) Left Outer — all rows from left table, matching from right. (2) Right Outer — all rows from right table, matching from left. (3) Full Outer — all rows from both tables. (4) Inner — only matching rows from both tables. (5) Left Anti — rows from left table that have no match in right. (6) Right Anti — rows from right table that have no match in left. Left Outer is the default and most commonly used in data preparation.
🎯 Explain: Power Query mein 6 joins hain — SQL jaisa hi concept hai. Left Outer = sabse common — left table ki saari rows, right se matching data. Right Outer = ulta — right table focus. Full Outer = dono ki saari rows — matching ya non-matching. Inner = sirf matching rows dono mein se. Left Anti = left mein hai but right mein nahi — finding "missing" data. Right Anti = right mein hai but left mein nahi. Interview mein Left Outer aur Inner sabse zyada pooche jaate hain. Anti joins ka use case batao — "find customers with no orders" — impressive lagta hai.
Q22: What is the difference between Table.Buffer and List.Buffer?
Answer: Table.Buffer loads an entire table into memory before further operations are performed, preventing the query engine from re-evaluating the source multiple times. List.Buffer does the same for a list (single column of values). Buffering is useful when a query references the same source data multiple times — without buffering, each reference triggers a new data fetch. Use Table.Buffer when merging a query with itself or when the same intermediate result is used in multiple steps.
🎯 Explain: Table.Buffer = poori table ko memory mein rakh lo — baar baar source se fetch nahi hoga. List.Buffer = ek list (column values) ko memory mein rakh lo. Kab use karo? Jab ek hi data ko multiple jagah reference kar rahe ho — bina buffer ke har baar source se data aayega — slow. Buffer se ek baar load, multiple times use. Advanced optimization technique hai — interview mein mention karo toh dikhta hai ki performance tuning jaante ho.
Q23: What is Incremental Refresh in Power BI?
Answer: Incremental Refresh is a feature that allows Power BI to refresh only the new or changed data instead of refreshing the entire dataset. You define a sliding window — for example, keep last 3 years of data but only refresh the last 30 days. This significantly reduces refresh time, resource usage, and load on the source database. Incremental Refresh requires RangeStart and RangeEnd parameters in Power Query and is configured through the table's refresh policy in Power BI Desktop.
🎯 Explain: Normally refresh karte ho toh poora data delete hoke dobara load hota hai — 50 lakh rows mein 1 ghanta lag sakta hai. Incremental Refresh mein sirf naye ya changed rows refresh hote hain — purana data as-is rehta hai. Example: 3 saal ka data rakho, sirf last 30 din ka refresh karo daily. Refresh time 1 hour se 5 minutes ho jayega. RangeStart aur RangeEnd parameters set karne padte hain. Large datasets ke liye must-have feature hai.
Q24: What is the difference between Load and Transform in Power Query?
Answer: When connecting to a data source, Power BI gives two options: (1) Load — directly loads the data into the data model as-is without opening Power Query Editor. Good for clean, ready-to-use data. (2) Transform — opens Power Query Editor where you can clean, reshape, filter, rename, change types, merge, and apply various transformations before loading. Best practice is to always choose Transform first, review the data, apply necessary cleaning steps, and then load. Loading dirty data leads to wrong reports.
🎯 Explain: Load = seedha data model mein daal do — bina dekhe, bina clean kiye. Risky hai — wrong data types, extra columns, duplicates sab aa jayenge. Transform = pehle Power Query Editor kholo, data dekho, clean karo, phir load karo. Professional approach hamesha Transform hai — data review karo pehle. Interview mein "I always choose Transform to review and clean data before loading — it's a best practice to never load raw data directly" — yeh bolo.
🟡 Category 5: Report Design, Gateway & Optimization (Q25–Q30)
Q25: What is a Power BI Gateway?
Answer: A Power BI Gateway is an on-premises software bridge that enables Power BI Service (cloud) to securely connect to on-premises data sources. There are two types: (1) On-premises Data Gateway (Standard) — supports multiple users and data sources, used in enterprise environments. (2) On-premises Data Gateway (Personal Mode) — supports only one user and limited data sources. The gateway is required when Power BI Service needs to refresh data from databases, file servers, or other sources located within the organization's private network.
🎯 Explain: Power BI Service cloud pe hai — lekin company ka SQL Server office ke andar hai (on-premises). Toh Service directly access nahi kar sakta. Gateway yeh bridge ka kaam karta hai — office ke server se data leke cloud pe bhejta hai securely. Standard Gateway enterprise ke liye — multiple users, multiple sources. Personal Gateway ek user ke liye — testing ya personal use. Scheduled refresh ke liye gateway mandatory hai jab data on-premises ho.
Q26: What is Bookmarks feature in Power BI?
Answer: Bookmarks in Power BI capture the current state of a report page — including filter selections, slicer values, visibility of visuals, cross-highlighting, and scroll position. You can create multiple bookmarks and switch between them using buttons or the bookmarks pane. Use cases include: creating tabbed navigation (showing/hiding visuals), building interactive presentations, toggle views between different chart types, and creating dynamic storytelling within reports.
🎯 Explain: Bookmarks ek saved state hai report page ka. Jaise ek page pe "Sales View" aur "Profit View" dono chahiye — dono ke alag bookmarks banao. Buttons pe click karke switch karo — same page pe different views dikhengi. Kaise kaam karta hai — jab bookmark banate ho, toh us waqt kaunse visuals visible hain, kaunse filters active hain — sab capture hota hai. Navigation buttons se link karo — professional dashboard ban jaata hai. Interview mein "I use bookmarks for tabbed navigation" — yeh real-world use case batao.
Q27: What are the best practices for Power BI report performance optimization?
Answer: Key optimization practices include: (1) Use Star Schema for data modeling. (2) Reduce table size — remove unnecessary columns and rows in Power Query. (3) Use Measures instead of Calculated Columns where possible. (4) Avoid complex iterators on large tables. (5) Use VAR in DAX to prevent redundant calculations. (6) Limit visuals per page — each visual fires a separate query. (7) Use DIVIDE instead of division operator. (8) Enable Query Folding. (9) Use Aggregation tables for large datasets. (10) Avoid bi-directional cross-filtering unless necessary.
🎯 Explain: Performance optimization bohot important hai — slow reports koi nahi dekhta. Star Schema follow karo, Power Query mein unnecessary columns/rows hatao, Measures use karo (Calculated Columns se file size badhta hai), VAR use karo (same calculation repeatedly avoid karo), ek page pe 7-8 se zyada visuals mat rakho (har visual ek query fire karta hai). Interview mein 5-6 points confidently bata do — dikhata hai ki tum production-level reports banaye ho jahan performance matter karta hai.
Q28: What is the Performance Analyzer in Power BI?
Answer: Performance Analyzer is a built-in tool in Power BI Desktop that measures and records how long each visual takes to render, run its DAX query, and process its results. It is accessed from View tab → Performance Analyzer → Start Recording. It shows three metrics for each visual: (1) DAX Query time — time spent executing the DAX expression. (2) Visual Display time — time to render the chart. (3) Other — processing and preparation time. It helps identify slow visuals and optimize DAX queries.
🎯 Explain: Performance Analyzer ek diagnostic tool hai — har visual kitna time le rahi hai yeh dikhata hai. Start Recording click karo, page interact karo, phir results dekho. Agar ek table visual 5 seconds le rahi hai — toh uska DAX check karo ya data model optimize karo. DAX Query time zyada hai toh formula optimize karo. Visual Display time zyada hai toh chart type change karo ya data points kam karo. Interview mein "I use Performance Analyzer to identify bottleneck visuals" — practical answer hai.
Q29: What are Aggregation Tables in Power BI?
Answer: Aggregation Tables are pre-summarized tables that store data at a higher grain — for example, monthly totals instead of daily transactions. When a user's query can be answered from the aggregation table, Power BI uses the smaller summarized table instead of querying the large detailed table. This dramatically improves query performance for dashboards with millions of rows. Aggregation tables work with both Import and DirectQuery modes and are configured through the Manage Aggregations dialog in Power BI Desktop.
🎯 Explain: Maan lo Sales table mein 5 crore rows hain — har query slow hogi. Solution: ek Aggregation Table banao jisme monthly level pe pre-calculated totals hain — sirf 60 rows (5 years × 12 months). Dashboard mein monthly chart load hoga toh Power BI pehle Aggregation Table check karega — agar answer mil jaaye toh 5 crore rows touch nahi karega. Sirf jab detail level drill-down ho tab original table use hogi. Performance 100x better ho sakti hai. Enterprise-level optimization technique hai.
Q30: What is the difference between Calculated Tables and Physical Tables in Power BI?
Answer: Physical Tables are actual data tables loaded from external data sources (Excel, SQL, CSV) through Power Query. They exist in the data source and are refreshed from there. Calculated Tables are created entirely within Power BI using DAX expressions — for example, DateTable = CALENDAR(DATE(2023,1,1), DATE(2023,12,31)). Calculated Tables are computed during data refresh and stored in memory. They are useful for creating Date Tables, lookup tables, or summary tables that do not exist in the source data.
🎯 Explain: Physical Table = bahar se aaya data — Excel file, SQL database, CSV. Power Query se load hota hai. Calculated Table = Power BI ke andar DAX se banaya gaya table — source mein exist nahi karta. Example: DateTable = CALENDAR(...) — yeh DAX se bana aur model mein add hua. Calculated Tables refresh pe re-calculate hoti hain. Use cases: Date Table banana, distinct values ki list banana, summary table banana. Interview mein Date Table as Calculated Table ka example do — sabse common use case hai.
📋 Quick Revision Table — 30 Questions at a Glance
| Q# | Question | One-Line Answer |
|---|---|---|
| Q1 | Row Context vs Filter Context? | Row = current row in iteration, Filter = active filters on data |
| Q2 | Context Transition? | CALCULATE converts Row Context into Filter Context |
| Q3 | ALL vs ALLEXCEPT vs REMOVEFILTERS? | ALL=clear all, ALLEXCEPT=keep specified, REMOVEFILTERS=ALL alias |
| Q4 | Iterator functions? | Row-by-row evaluation — SUMX, AVERAGEX, RANKX, COUNTX |
| Q5 | DIVIDE vs / operator? | DIVIDE handles zero safely, / gives error |
| Q6 | VAR keyword? | Stores intermediate values — readable, performant, debuggable |
| Q7 | Time Intelligence functions? | TOTALYTD, SAMEPERIODLASTYEAR, DATEADD, DATESINPERIOD |
| Q8 | Why Date Table needed? | Continuous dates required for Time Intelligence to work |
| Q9 | TOTALYTD vs DATESYTD? | TOTALYTD=shortcut, DATESYTD=flexible with extra filters |
| Q10 | YoY % calculation? | VAR+DIVIDE+SAMEPERIODLASTYEAR — safe and readable |
| Q11 | DATEADD vs SAMEPERIODLASTYEAR? | DATEADD=flexible any shift, SAMEPERIODLASTYEAR=fixed 1 year |
| Q12 | PARALLELPERIOD vs DATEADD? | PARALLELPERIOD=full period, DATEADD=exact date shift |
| Q13 | What is RLS? | Row-Level Security — restrict data access per user |
| Q14 | Static vs Dynamic RLS? | Static=hardcoded roles, Dynamic=USERPRINCIPALNAME() auto-filter |
| Q15 | Snowflake vs Star Schema? | Star=denormalized faster, Snowflake=normalized more tables |
| Q16 | Inactive Relationships? | Activated using USERELATIONSHIP inside CALCULATE |
| Q17 | RELATED vs RELATEDTABLE? | RELATED=one value from "one" side, RELATEDTABLE=all rows from "many" |
| Q18 | Many-to-Many handling? | Bridge Table preferred, or native M:M with Both filter |
| Q19 | Query Folding? | Transformations pushed to source as SQL — faster processing |
| Q20 | Merge vs Merge as New? | Merge=modifies original, As New=creates separate clean query |
| Q21 | Join types in Power Query? | Left/Right Outer, Full Outer, Inner, Left/Right Anti |
| Q22 | Table.Buffer & List.Buffer? | Cache data in memory to avoid repeated source fetches |
| Q23 | Incremental Refresh? | Refresh only new/changed data — faster, efficient |
| Q24 | Load vs Transform? | Load=direct import, Transform=clean in Power Query first |
| Q25 | What is Gateway? | Bridge between cloud Service and on-premises data sources |
| Q26 | Bookmarks? | Save page state — used for tabbed navigation & storytelling |
| Q27 | Performance best practices? | Star Schema, reduce data, Measures>Columns, VAR, limit visuals |
| Q28 | Performance Analyzer? | Measures DAX query time, visual render time per visual |
| Q29 | Aggregation Tables? | Pre-summarized tables for faster queries on large datasets |
| Q30 | Calculated vs Physical Tables? | Physical=from source, Calculated=created via DAX inside PBI |
Thanks for Reading! 🙏
Thanks for reading! Data Insights par aur bhi Power BI, Excel, SQL topics available hain — explore karo aur apni analytics journey strong banao! Happy Learning & Keep Exploring! 🚀
— JatinAnalytics
💬 Comments (0)
Loading comments...