Sample Renewal Exam questions
- Get link
- X
- Other Apps
You are merging Orders and Orders Detail queries in Power Query Editor. Due to data quality issues, some rows in the Orders query do NOT have a matching row in the Order Details query. You need to select the appropriate join type to ensure that all the rows from the Orders query are shown. Which join type should you use? Select only one answer. a. Full Outer b. Inner c. Left Outer d. Right Anti
ChatGPT said:
✅ Correct answer: c. Left Outer
Explanation:
When merging queries in Power Query:
-
A Left Outer Join keeps all rows from the first (left) table — in this case, the Orders query — and only matching rows from the second (right) table — the Order Details query.
If some orders do not have matching order details, those orders will still appear in the merged result, with null values for the unmatched columns.
Summary of join types (for clarity):
-
Inner → Only matching rows in both tables
-
Left Outer → All rows from left + matching from right ✅
-
Right Outer → All rows from right + matching from left
-
Full Outer → All rows from both, matched where possible
-
Right Anti → Only rows from right with no match in left
So the correct choice is c. Left Outer.
You said:
ChatGPT said:
✅ Correct answer: d. Replace Values
Explanation:
In Power Query, to convert blank values (empty strings) to null, you use the Replace Values option.
Steps:
-
Select Column A.
-
On the Home tab (or right-click the column), choose Replace Values.
-
In the dialog box:
-
Value to Find: leave it blank
-
Replace With: enter null
-
This replaces all blank entries with nulls.
Other options explained:
-
Clean → Removes non-printable characters (does not affect blanks).
-
Fill Down → Fills empty cells with the value from the cell above.
-
Replace Errors → Replaces only error values, not blanks.
✅ Therefore, the correct choice is d. Replace Values.
You said:
ChatGPT said:
✅ Correct answer: a. 1 through 10
Explanation:
A Left Outer Join in Power Query keeps:
-
All rows from the first (left) query → here, Query1 (IDs 1–10)
-
Plus only the matching rows from the second (right) query → here, Query2 (IDs 5–15)
That means:
-
IDs 1–4 will appear with nulls for Query2 columns (no match).
-
IDs 5–10 will appear with matching data from Query2.
✅ Therefore, the merged query will contain employee IDs 1 through 10.
You said:
ChatGPT said:
✅ Correct answer: d. Role-playing dimension
Explanation:
A role-playing dimension is a single dimension table (like DimDate) that is used multiple times in a model to play different roles depending on the relationship.
In this case:
-
FactSales[OrderDate] → DimDate[Date](Active) -
FactSales[ShipDate] → DimDate[Date](Inactive) -
FactSales[ReturnDate] → DimDate[Date](Inactive)
Here, the same DimDate table is being used as:
-
Order Date dimension
-
Ship Date dimension
-
Return Date dimension
That’s the definition of a role-playing dimension.
✅ Answer: d. Role-playing dimension
You said:
ChatGPT said:
✅ Correct answers:
c. Create a relationship between Sales and Date
d. Create a relationship between Returns and Date
e. Select the Date table and select Mark as date table
Explanation:
To view and filter Sales and Returns by the same months, both fact tables (Sales and Returns) must be related to a shared Date dimension.
Here’s what each correct step does:
-
(c) Create a relationship between Sales and Date → links sales records to the calendar.
-
(d) Create a relationship between Returns and Date → links return records to the same calendar.
-
(e) Mark the Date table as the official date table → enables consistent time intelligence functions and filtering by month, quarter, year, etc.
Incorrect options:
-
(a) Creating a DAX measure combining sales and returns is optional — it doesn’t enable shared filtering.
-
(b) Creating separate month columns in Sales and Returns breaks the concept of a central date table and doesn’t solve the synchronization issue.
✅ Therefore, the correct combination is c, d, and e.
You said:
ChatGPT said:
✅ Correct answer: b. Location Dimension
Explanation:
In a star schema, we organize data into:
-
Fact tables → contain measurable, numeric data (e.g., Temperature).
-
Dimension tables → contain descriptive, categorical information (e.g., LocationName, Date, Product, etc.).
In your case:
-
The Fact table is Temperature Measurements Fact, containing
Temperature,LocationID, andDateTime. -
The LocationName is a descriptive attribute — it describes the location, not a measurement — so it belongs in the Location Dimension table along with
LocationID.
✅ Answer: b. Location Dimension
You said:
ChatGPT said:
✅ Correct answer: c. One-to-many from Sales to Sales Detail
Explanation:
In this scenario:
-
Each Sales record (e.g., one order) can have multiple related rows in Sales Detail (e.g., line items for that order).
-
Therefore, Sales is the “one” side of the relationship, and Sales Detail is the “many” side.
So, the relationship should be:
Sales[SalesID] (one) → Sales Detail[SalesID] (many)
✅ Answer: c. One-to-many from Sales to Sales Detail
You said:
ChatGPT said:
✅ Correct answer: c. LASTNONBLANK
Explanation:
You need a measure that returns the last available inventory balance within a selected period — even if some days (like weekends) have no data.
The DAX function LASTNONBLANK() is specifically designed for this purpose. It returns the last value in a column that is not blank, based on the current filter context — ideal for finding the most recent non-empty record.
How it works conceptually:
Last Inventory Balance := CALCULATE( LASTNONBLANK(FactInventory[Date], SUM(FactInventory[InventoryBalance])) )
This finds the last date (within the selected period) where inventory data exists, then returns the corresponding balance.
Why not the others:
-
EOMONTH → Returns the last day of a month (not related to missing data).
-
FIRSTNONBLANK → Returns the first nonblank value, not the last.
-
NETWORKDAYS → Calculates working days between two dates (Excel-style), not used for measures.
✅ Therefore, the correct answer is: c. LASTNONBLANK
You said:
ChatGPT said:
✅ Correct answer:
a. CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
Explanation:
You want a measure — Stock on Hand — that returns the inventory balance as of the last date in the current filter context (day, week, month, or year).
The correct DAX pattern for this is:
Stock on Hand := CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
This formula:
-
Evaluates the sum of UnitsBalance.
-
Filters the calculation to only the last date in the current time context (for example, the last day of a selected month or week).
Why not the others:
-
Option b (LASTNONBLANK) → Used when there are missing dates (not required for a complete daily snapshot table).
-
FIRSTDATE('Date'[Date]) → Would return the balance on the first day of the period, not the last.
-
MAX('Date'[Date]) → Returns a scalar date value, not a filter context; it won’t work properly in a CALCULATE filter argument.
✅ Final Answer:
a. CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
You said:
ChatGPT said:
✅ Correct answer: 1.
CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
Explanation:
You need a measure that returns the inventory balance as of the last date in the currently selected time period — whether the user filters by day, week, month, or year.
This is a classic inventory snapshot pattern in Power BI.
How it works:
Stock on Hand := CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
-
SUM(FactInventory[UnitsBalance])→ sums the inventory quantity. -
LASTDATE('Date'[Date])→ filters the calculation to the last date in the current filter context (e.g., last day of a selected month).
Why not the others:
-
2. LASTNONBLANK → Used when there are missing dates in the fact table. Here, since there’s one row per product per date (a complete snapshot),
LASTDATEis sufficient. -
4. FIRSTDATE → Returns the first date of the context, not the last.
-
5. MAX('Date'[Date]) → Returns a scalar value, not a table filter, so it doesn’t behave correctly inside
CALCULATE.
✅ Final Answer:
1. CALCULATE( SUM(FactInventory[UnitsBalance]), LASTDATE('Date'[Date]) )
You said:
ChatGPT said:
✅ Correct answer: b. MEDIAN('Person'[Age])
Explanation:
You need to find the middle value (the median) of the Age column in the Person table.
The DAX function MEDIAN() returns the value that lies in the middle of a numeric dataset — that is, half the numbers are greater and half are smaller.
Why not the others:
-
a.
AVERAGE('Person'[Age])→ Returns the mean (average), not the middle value. -
c.
RANK.EQ('Person'[Age], 'Person'[Age])→ Returns the rank position, not the median value. -
d.
STDEV.P('Person'[Age])→ Returns the standard deviation, not the middle value.
✅ Final Answer: b. MEDIAN('Person'[Age])
You said:
ChatGPT said:
✅ Correct answer: a.
CALCULATE( AVERAGE( Table1[Item Price] ), REMOVEFILTERS( Table1[Region] ) )
Explanation:
You need a measure that returns the average item price — but ignores any filters on the Region column, so it always calculates the average across all regions.
The correct approach is to use CALCULATE with REMOVEFILTERS (or equivalently ALL) to remove the regional filter context.
How it works:
Avg Price - All Regions := CALCULATE( AVERAGE(Table1[Item Price]), REMOVEFILTERS(Table1[Region]) )
-
AVERAGE(Table1[Item Price])→ computes the average item price. -
REMOVEFILTERS(Table1[Region])→ ensures the result ignores any region-based filters or slicers.
Why not the others:
-
b. CALCULATETABLE(...) → returns a table, not a scalar measure (invalid here).
-
c. MEDIAN(...) → calculates the median, not the average.
-
d. SUMMARIZE(...) → used to create tables, not scalar measures.
✅ Final Answer:
a. CALCULATE( AVERAGE( Table1[Item Price] ), REMOVEFILTERS( Table1[Region] ) )
You said:
ChatGPT said:
✅ Correct answer: c. Remove the rows that relate to sales that occurred more than two years earlier.
Explanation:
The analysis requirements only mention:
-
Current and previous year sales (so 2 years of data needed)
-
Current year sales by product category
Since your model currently holds five years of sales data, keeping all five years is unnecessary. Removing sales records that are more than two years old will:
-
Significantly reduce model size (since the Sales table has 5 million rows)
-
Still allow all required analyses (current and previous year comparisons)
Why not the others:
-
a. Remove the Product Status column → Only removes one column, minimal space saved; not relevant to the analysis scope.
-
b. Remove rows for inactive products → Could distort analysis if those products were active in the past year or have valid sales history.
-
d. Remove the Sale Date column → Breaks all time-based analysis; you need Sale Date for “current” and “previous year” comparisons.
✅ Final Answer:
c. Remove the rows that relate to sales that occurred more than two years earlier.
You said:
ChatGPT said:
✅ Correct answer: b. Summarize the FactSales table to the month level.
Why: Reports need monthly sales by product, so you can safely aggregate the large FactSales table from daily rows to one row per product per month. This drastically reduces rows (and model size) while preserving the required granularity (product × month).
Notes:
-
Keep
DimProductas-is (product-level lookup). -
Keep or create a month-level date key in
DimDate(or a month column) to join to the aggregated fact. -
Ensure measures (e.g., totals, year-over-year) still work after aggregation.
You said:
ChatGPT said:
✅ Correct answer: a. Column chart
Explanation:
When you need to show how values (like sales) change over time, the best visualizations are time-series visuals — typically a column chart or line chart.
A column chart (especially a clustered or stacked column chart) clearly illustrates trends and changes in values across time periods (e.g., months, quarters, or years).
Why not the others:
-
b. Doughnut chart → Shows part-to-whole relationships, not trends over time.
-
c. Funnel chart → Used for process stages (e.g., sales pipeline), not time-based trends.
-
d. Pie chart → Used to show proportions of a whole at one point in time, not over time.
✅ Final Answer: a. Column chart
You said:
ChatGPT said:
✅ Correct answer: d. The Canvas setting must be set to Tooltip
Explanation:
To use a report page as a tooltip in Power BI (a “report page tooltip”), you must configure that page properly.
Steps:
-
Go to the second page (the one you want to use as a tooltip).
-
In the Visualizations pane, select Format → Page Information.
-
Turn on “Allow use as tooltip.”
-
In Page size → Type, set it to “Tooltip.”
Setting the Canvas (Page size) to Tooltip adjusts the page dimensions and design specifically for tooltip use.
Why not the others:
-
a. Allow Q&A setting → Used for natural language queries, unrelated to tooltips.
-
b. Allow use as tooltip → Must also be enabled, but the core configuration is setting the Canvas (Page size) to Tooltip.
-
c. Background transparency → Optional visual styling, not required for tooltip functionality.
✅ Final Answer: d. The Canvas setting must be set to Tooltip
You said:
ChatGPT said:
✅ Correct answer: b. Scatter chart
Explanation:
Clustering in Power BI helps you group similar data points based on numeric and categorical fields — for example, grouping products with similar Sales Amount and Order Quantity.
The Scatter chart is the visualization type that supports built-in clustering in Power BI. You can right-click within a scatter chart and select “Automatically find clusters” to let Power BI identify patterns and groupings.
Why not the others:
-
a. Line chart → Used for trends over time, not clustering.
-
c. Tree map → Used to show hierarchical data and proportions, not clustering.
-
d. Waterfall chart → Used to show running totals or changes between values, not clustering.
✅ Final Answer: b. Scatter chart
You said:
ChatGPT said:
✅ Correct answer: c.
ProfitIncrease = [Profit] – PREVIOUS([Profit])
Explanation:
You want to compare each quarter’s profit with the previous quarter’s profit — that is, calculate the quarter-over-quarter change.
In DAX, this type of calculation uses the PREVIOUS (or in actual DAX, typically PREVIOUSQUARTER or PREVIOUSMONTH) pattern to reference the value from the prior time period.
Conceptually, the expression means:
“Current quarter’s profit minus the previous quarter’s profit.”
Why not the others:
-
a. MOVINGAVERAGE → Not a valid DAX function (it’s an Excel concept); calculates averages, not differences.
-
b. Next([Profit]) → No such function in DAX; also, we want previous quarter comparison, not next.
-
d. RUNNINGSUM → Represents a cumulative total, not a quarter-to-quarter difference.
✅ Final Answer: c. ProfitIncrease = [Profit] – PREVIOUS([Profit])
You said:
ChatGPT said:
✅ Correct answer: c. Running sum
Explanation:
A running sum (also known as a cumulative total) shows the progressive total of a measure — in this case, Units Sold — across rows (such as over time or by category).
So if your table lists sales by date or product, a running sum will display the total units sold up to that point in the sequence.
Why not the others:
-
a. Moving average → Shows an average over a rolling window, not a cumulative total.
-
b. Percent of parent → Shows proportion relative to a parent category.
-
d. Versus last → Compares the current value to the previous one, not a running total.
✅ Final Answer: c. Running sum
You said:
ChatGPT said:
✅ Correct answer: c. X-axis
Explanation:
In Power BI, drill-down functionality is created by adding multiple fields to the same axis hierarchy — typically the X-axis for time-based visuals.
In this case:
-
You already have Month on the X-axis.
-
To enable drill-down from Month → Week → Day, you add the Week and Day fields below Month in the X-axis field well.
Then users can click the drill-down arrows on the visual to navigate through the hierarchy.
Why not the others:
-
a. Legend → Used for grouping or color differentiation, not hierarchy drilling.
-
b. Small Multiples → Creates separate charts per category, not drill-down.
-
d. Y-axis → Used for numerical values (like Revenue), not hierarchical categories.
✅ Final Answer: c. X-axis
You said:
ChatGPT said:
✅ Correct answer: c. Select the bar chart and set the pie chart interaction to Filter.
Explanation:
In Power BI, when you enable Edit Interactions, you define how selecting data in one visual affects another visual.
Here’s what you want:
When a bar is selected, the pie chart should update to show only the related data (i.e., filter the data).
That means:
-
The bar chart is the source visual (the one being clicked).
-
The pie chart is the target visual (the one being filtered).
-
Therefore, you select the bar chart, then set the interaction on the pie chart to Filter.
Why not the others:
-
a. Wrong — You should select the bar chart, not the pie chart.
-
b. Wrong — Setting to None would disable any interaction.
-
d. Wrong — Setting to None would stop filtering.
✅ Final Answer: c. Select the bar chart and set the pie chart interaction to Filter.
You said:
ChatGPT said:
✅ Correct answers:
→ b. Grant app access to the security group containing the users and publish the app.
→ d. Set Include in App to Yes for the one semantic model and the three reports.
Explanation:
You want to:
-
Give read-only access to specific Power BI content (1 semantic model + 3 reports).
-
Ensure access is automatically managed when users join or leave the department.
Step-by-step reasoning:
-
Use an App for controlled access
-
Power BI Apps allow you to publish only selected content (datasets, reports, dashboards) from a workspace.
-
Users who get access to the app can view only what’s included.
✅ Answer b: Grant app access to the security group containing the users and publish the app.
-
Using a security group ensures access automatically updates when members leave or join the department.
-
-
Include only relevant content in the app
-
You only want users to access one semantic model and three reports.
-
Therefore, you must explicitly include those items in the app.
✅ Answer d: Set Include in App to Yes for the one semantic model and the three reports.
-
Why not the others:
-
a. Add the security group to the Viewer role on the workspace
❌ This gives users read access to everything in the workspace — not just selected items. -
c. Set Include in App to Yes for all semantic models and reports
❌ That would expose all content, not just the one model and three reports. -
e. Share the one semantic model and the three reports with each user
❌ Manual sharing does not scale and won’t automatically remove access for users who leave.
✅ Final Answer:
b and d
You said:
ChatGPT said:
✅ Correct answer: → c. Member
Explanation:
You need to let User1:
-
Publish reports
-
Add other users with permissions to create reports
-
Follow the principle of least privilege (only the permissions necessary — not full admin rights)
Power BI Workspace Roles Overview
| Role | Can Publish Reports? | Can Add/Manage Users? | Can Delete Workspace? | Typical Use Case |
|---|---|---|---|---|
| Admin | ✅ Yes | ✅ Yes (full control) | ✅ Yes | Full workspace management |
| Member | ✅ Yes | ✅ Can add users (except Admins) | ❌ No | Manage content and contributors |
| Contributor | ✅ Yes | ❌ No | ❌ No | Create and edit content only |
| Viewer | ❌ No | ❌ No | ❌ No | View-only access |
Why “Member” is correct:
-
Can publish reports ✔️
-
Can add or manage users (except Admins) ✔️
-
Cannot delete the workspace (safer than Admin) ✔️
-
Follows least privilege principle ✔️
✅ Final Answer: c. Member
You said:
ChatGPT said:
✅ Correct answer: → d. Microsoft Entra security group
Explanation:
Row-Level Security (RLS) in Power BI supports assigning roles to users or groups — but only certain group types work.
Which group types work with RLS?
| Group Type | Works with RLS? | Notes |
|---|---|---|
| Microsoft Entra security group (formerly Azure AD security group) | ✅ Yes | Fully supported for RLS. Recommended option. |
| Active Directory Domain Services security group | ❌ No | On-premises AD groups don’t sync automatically for RLS in Power BI Service. |
| Microsoft 365 group | ❌ No | Not supported for RLS role assignments. |
| Distribution list | ❌ No | Used for email, not for access or RLS permissions. |
Why Microsoft Entra Security Group?
-
It integrates directly with Power BI’s identity and access management system.
-
Members of the group automatically gain or lose RLS access when they are added or removed.
-
Simplifies automated access management for large teams.
✅ Final Answer: d. Microsoft Entra security group
You said:
ChatGPT said:
✅ Correct answer: → d. Employee[EmailAddress] = USERPRINCIPALNAME()
Explanation:
To implement Row-Level Security (RLS) based on the user’s email address, you need to use the USERPRINCIPALNAME() DAX function.
Breakdown of options
| Option | Description | Works for this scenario? |
|---|---|---|
| a. Employee[EmailAddress] = USERCULTURE() | Returns the user’s locale (e.g., “en-US”). | ❌ No — not related to email or identity. |
| b. Employee[EmailAddress] = USERNAME() | Returns the user’s login name (format varies — sometimes domain\username or email). | ⚠️ Works in some setups, but inconsistent in the Power BI Service (especially with cloud users). |
| c. Employee[EmailAddress] = USEROBJECTID() | Returns the user’s unique Microsoft Entra ID (GUID). | ❌ No — you’d have to store object IDs in the table, not email addresses. |
| d. Employee[EmailAddress] = USERPRINCIPALNAME() | Returns the user’s UPN (usually their email address in Power BI Service). | ✅ Yes — best practice for cloud-based RLS. |
Recommended Formula
Employee[EmailAddress] = USERPRINCIPALNAME()
This ensures that when a user signs in, Power BI compares their login email to the EmailAddress field in the Employee table, filtering data so they only see their own sales.
✅ Final Answer: d. Employee[EmailAddress] = USERPRINCIPALNAME()
- Get link
- X
- Other Apps
Comments
Post a Comment