What this quiz covers
This quiz focuses on Date Tables, giving you a quick way to practice the rules, question types, and explanations that matter most for Microsoft Power BI.
The Sales[OrderDateTime] column contains values such as 2026-03-15 14:30:00. A marked Date table contains one row per day, and Date[Date] stores each date at midnight. A relationship directly between these columns leaves most sales rows unmatched.
Which modification should you make?
Date[Date], and keep the Date table marked.Date[Date] to text, relate it to the formatted transaction timestamp, and retain the marked table.Microsoft Power BI Quiz
Practice Date Tables in Microsoft Power BI with focused quiz questions that help you check what you know, review explanations, and build confidence with test-style prompts.
This quiz focuses on Date Tables, giving you a quick way to practice the rules, question types, and explanations that matter most for Microsoft Power BI.
Try each quiz question before looking at the correct answer. Use the explanations to review missed ideas, then come back to similar questions until the pattern feels familiar.
The Sales[OrderDateTime] column contains values such as 2026-03-15 14:30:00. A marked Date table contains one row per day, and Date[Date] stores each date at midnight. A relationship directly between these columns leaves most sales rows unmatched.
Which modification should you make?
Date[Date], and keep the Date table marked. (correct answer)Date[Date] to text, relate it to the formatted transaction timestamp, and retain the marked table.2026-03-15 00:00:00). When Sales[OrderDateTime] stores full timestamps like 2026-03-15 14:30:00, no timestamp matches midnight exactly, so the relationship produces blanks. The fix in A is correct: you create a calculated column in Sales that strips the time component — using DATE(), DATEVALUE(), or INT() — producing a pure date value that matches Date[Date] exactly. This preserves the marked Date table, maintains time intelligence functions, and resolves the granularity mismatch cleanly.
B is wrong because adding every transaction timestamp to the Date table violates the one-row-per-day requirement, breaks the "marked as Date table" designation, and destroys time intelligence entirely. C is wrong because converting dates to text for matching is fragile, locale-dependent, and eliminates the ability to use DAX time intelligence functions, which require proper date data types. D is wrong because bidirectional filtering addresses cross-filter direction, not granularity mismatches — the rows still don't join, so enabling it changes nothing about the unmatched records, and the automatic date hierarchy won't compensate for a broken relationship.
As a study rule: in Power BI, relationship problems caused by time components are always solved on the fact table side — strip the time to create a date key, never alter the Date table's structure.A model has a marked table named DimDate and an active one-to-many relationship from DimDate[Date] to Sales[OrderDate]. A prior-year measure applies SAMEPERIODLASTYEAR to Sales[OrderDate] rather than to the date dimension.
What change most directly aligns the measure with the marked Date table?
SAMEPERIODLASTYEAR to DimDate[Date] and retain the existing active relationship. (correct answer)Sales[OrderDate].Sales[OrderDate] in the measure.DimDate and rely on the automatic hierarchy for Sales[OrderDate].SAMEPERIODLASTYEAR are built to operate through that relationship.
The most direct fix is A: apply SAMEPERIODLASTYEAR to DimDate[Date] while keeping the existing active relationship intact. Since DimDate is already marked as the Date table and has an active relationship to Sales[OrderDate], the engine will correctly filter the fact table through that relationship. Using the dimension's date column is exactly what the marked Date table pattern is designed for — you get consistent, reliable time intelligence behavior.
B is wrong because marking the fact table (Sales) as a Date table would break the intended star-schema design. Fact tables shouldn't serve as Date tables; that role belongs to a dedicated dimension. C is a red herring — making the relationship bidirectional changes cross-filter direction but doesn't fix the root issue of using the wrong column in the measure. Bidirectional relationships also introduce ambiguity risks in complex models. D is the worst option: removing DimDate and relying on auto-hierarchies sacrifices the precision and control that a proper Date table provides, and time intelligence functions won't behave predictably without one.
As a study tip, remember: time intelligence functions should always reference the marked Date table's date column. If a measure is pointing to a fact table column instead, that's your signal to redirect it to the dimension.A Sales table contains OrderDate and ShipDate. Report users must independently filter one visual by order year and another visual by ship year on the same report page. Both date contexts must work without measure-specific relationship activation.
How should you model the date dimensions?
OrderDate and ShipDate — you're dealing with a classic role-playing dimension scenario. The key question is: how do you give each date column its own independent filter context without conflicts?
In Power BI, a single table can only have one active relationship per pair of tables. This is the core constraint that shapes your entire modeling decision here. The cleanest solution is to create separate physical copies of your Date table — one called "Order Date" and one called "Ship Date" — each marked as a Date table, and each connected to the Sales table via its own active relationship. This is exactly what option C describes. Because both relationships are active, slicers or filters placed on either table work independently and simultaneously, with no DAX workarounds needed.
Option A is impossible — Power BI simply won't allow two active relationships between the same pair of tables. Option B relies on one inactive relationship, which means you'd need USERELATIONSHIP() inside every measure that uses the inactive path — violating the requirement that date contexts work "without measure-specific relationship activation." Option D is a fabrication; the Mark as Date Table feature accepts only a single date column as the key, so marking by two columns isn't a valid Power BI feature.
The correct answer is C: role-playing tables give each date context a clean, active relationship with no hidden complexity.
Study tip: Whenever you see multiple date columns in a fact table, immediately think "role-playing dimensions." Each date role needs its own physical Date table copy in Power BI — one active relationship per table pair is a hard rule you can rely on.A star schema uses integer keys. DimDate[DateKey] contains values such as 20260709 and relates to Sales[DateKey]. The dimension also contains a unique, contiguous DimDate[Date] column with the Date data type.
How should you configure the model for standard time intelligence?
DimDate by using DimDate[Date] while retaining the relationship based on the integer date keys. (correct answer)DimDate by using DimDate[DateKey] because the relationship key must be the designated column.Sales[DateKey] because time intelligence must use the fact-side key.DimDate[Date] with formatted text because marked tables cannot retain surrogate integer keys.DimDate using DimDate[Date] because it satisfies all three requirements — it's a proper Date type, unique, and contiguous. Meanwhile, the integer surrogate key relationship between DimDate[DateKey] and Sales[DateKey] remains intact and continues to drive join performance. Power BI separates the concept of "which column drives time intelligence functions" from "which column links tables together." These can — and often should — be different columns.
B reflects a common misconception: that the relationship key must serve as the marked column. Power BI imposes no such constraint. The relationship and the marked date column are independent configurations.
C is wrong on two counts. First, you mark a dimension table, never a fact table. Second, Sales[DateKey] is an integer, not a Date type, so it cannot satisfy the marking requirements regardless.
D is a fabricated limitation. Marking a table as a Date Table places no restrictions on other columns — you can keep integer keys, text fields, or any other columns alongside the designated Date column.
Your study tip: remember that "Mark as Date Table" is about unlocking DAX time intelligence functions, and the marked column is a pointer for DAX, not a replacement for your relationship key.A marked Date table is currently generated from the minimum and maximum dates in ActualSales. The model now includes monthly budget rows through December 2027, but actual sales currently end in July 2026. Reports must display future budget months even when no actual sales exist.
What should you change in the Date table?
DATEADD or TOTALYTD) works correctly. Preserving the marked status tells Power BI this is the authoritative date axis for all relationships.
Choice A is a relationship mistake — connecting Budget directly to ActualSales conflates two separate fact tables and breaks the star schema. Budget and ActualSales should both relate independently to the Date dimension, not to each other. Choice B misunderstands the root problem: "Show items with no data" reveals dimension members with no matches, but if future dates don't even exist in the Date table, there's nothing to show — the dates are simply absent, not merely unmatched. Choice C is tempting but dangerous: appending only twelve month-end rows creates gaps in the calendar, breaking daily-granularity time intelligence calculations and any measures that rely on contiguous dates.
As a study tip, remember: in Power BI, a marked Date table must be contiguous and complete across all dates referenced anywhere in the model — past or future.A shared semantic model contains several fact-table date columns. Auto date/time is enabled, so report authors see separate hidden hierarchies for those columns. You have added a conformed calendar with fiscal periods, week labels, and holiday indicators.
Which configuration best promotes consistent time intelligence across reports?
TOTALYTD and DATESYTD, ensuring every measure uses the same fiscal logic. Pairing this with disabling Auto date/time removes the hidden per-column hierarchies that Power BI generates automatically. Those hidden hierarchies are calendar-year-based and completely ignore your fiscal periods — leaving them active means report authors can accidentally use the wrong hierarchy, producing inconsistent results. Answer D is correct because it eliminates that ambiguity entirely.
Answer A fails because copying fiscal columns into each fact table defeats the "single source of truth" purpose — updates must be replicated everywhere, and inconsistencies creep in. Answer B is the most dangerous trap: Auto date/time hierarchies are calendar-year only and cannot represent fiscal quarters or custom week labels, so they are structurally incompatible with fiscal time intelligence. Answer C compounds this problem — marking multiple fact tables as Date Tables creates ambiguous relationships and still leaves conflicting automatic hierarchies active.
As a study tip, remember this pattern: conformed calendar + Mark as Date Table + disable Auto date/time = consistent time intelligence. Any question describing a shared semantic model with custom fiscal logic should point you toward this combination immediately.A properly marked Date table spans complete fiscal years, and the company's fiscal year ends September 30. A developer assumes that marking the table will cause a default year-to-date calculation to reset automatically on October 1.
What should the developer do to produce the required fiscal year-to-date result?
CALENDARAUTO(9) because its range alone changes every default year-to-date boundary.TOTALYTD default to December 31 as the year-end boundary unless you explicitly override it. To calculate fiscal year-to-date for a September 30 year-end, you must pass that date as the optional third argument: TOTALYTD([Measure], Dates[Date], "9/30"). This is exactly what B prescribes — using the marked date column while explicitly supplying September 30 as the reset boundary.
A is wrong because it describes behavior that simply doesn't exist. Marking a Date table conveys no fiscal boundary information to DAX; the engine never "infers" a non-calendar year-end automatically.
C is a trap for developers who confuse filtering by a label column with proper time intelligence. Unmarking the table disables the time intelligence framework entirely, and filtering on a label column produces fragile, non-standard calculations that won't leverage DAX's optimized engine.
D misrepresents what CALENDARAUTO(9) does. The argument controls the last month of the auto-generated range, ensuring complete years are included — it does not change the default year-to-date reset boundary in any DAX calculation.
As a study tip: always ask two separate questions — "Is my Date table marked?" and "Have I told DAX where my fiscal year ends?" Both must be answered correctly for fiscal time intelligence to work.The earliest date in a model is January 15, 2024, and the latest date is August 20, 2025. The organization's fiscal years begin July 1 and end June 30. You create the calendar by using CALENDARAUTO(6).
Which date range should the generated table contain before you mark its date column?
CALENDARAUTO(), focus on two things: what the optional parameter means, and how Power BI determines the date range boundaries.
The optional parameter in CALENDARAUTO(6) specifies the fiscal year-end month — in this case, month 6 (June). Power BI uses this to identify which fiscal year each boundary date falls in, then expands the range to cover complete fiscal years. The earliest date in the model is January 15, 2024, which falls within the fiscal year running July 1, 2023 – June 30, 2024. The latest date is August 20, 2025, which falls within the fiscal year running July 1, 2025 – June 30, 2026. So the generated table spans July 1, 2023 through June 30, 2026 — confirming B is correct.
A is wrong because CALENDARAUTO() does not always use calendar years. Without a parameter (or with parameter 12), it defaults to December as the year-end, producing calendar years — but supplying a different month changes that behavior entirely.
C is wrong because it only covers a single fiscal year and ignores both the earliest and latest dates in the model. Power BI always expands outward to fully contain every boundary date, not inward.
D is wrong because CALENDARAUTO() never just returns the raw dates present in your data. Its entire purpose is to generate a complete, contiguous date range — filling in every day between the boundaries.
Study tip: Memorize that the CALENDARAUTO(n) parameter sets the fiscal year-end month, and that Power BI always rounds the range outward to complete fiscal (or calendar) years — never inward, never exact.A calendar table starts on January 1, 2024 and ends on December 31, 2024. Its date column is unique, has the Date data type, and contains no blanks. Power BI still reports that the column is not contiguous when you mark the table.
Which correction is most likely required?
Date — not Date/Time. Converting to Date/Time changes nothing about whether days are missing and does not resolve a contiguity error.
B is a trap that misunderstands the problem. Removing December 31 would actually create a new gap rather than fix anything; Power BI needs all 366 days present, not fewer days to match a standard year.
D is wrong because duplicate rows would violate the uniqueness requirement, causing a different validation error entirely — not correct the contiguity issue.
As a study habit, always ask yourself: "Is this year a leap year?" when reviewing calendar table questions on the Power BI exam. Leap-year gaps are a classic source of contiguity failures.A sales model contains transactions only on business days. A calculated table is created by using DISTINCT(Sales[OrderDate]). The table includes unique, nonblank dates, but Power BI rejects it when you attempt to mark it as a Date table.
What should you do to create a valid Date table while retaining the required reporting period?
CALENDAR from the minimum through maximum order date, and mark its date column. (correct answer)CALENDAR(MIN(Sales[OrderDate]), MAX(Sales[OrderDate])) generates every single date between the earliest and latest order date, with no gaps. This satisfies Power BI's contiguity requirement, and you can then mark that table's date column as the official Date table. Your visuals still reflect only the reporting period defined by your actual sales data — you haven't lost anything meaningful.
Option A fails because changing the data type to Date/Time doesn't fix the underlying gap problem. Power BI's validation checks for missing dates, not data types — a column full of business-day-only dates will still be rejected regardless of formatting.
Option C is a red herring. An index column is numeric, not a date type. Power BI requires a date column to mark a Date table, so an integer index is categorically ineligible for that role.
Option D misunderstands what Auto date/time does. That feature auto-generates hidden date hierarchies for existing date columns — it doesn't create a standalone, markable Date table, and it can't be used to satisfy the Mark as Date Table requirement on your own calculated table.
Your study tip: memorize that a valid Power BI Date table needs gapless, contiguous dates — always reach for CALENDAR or CALENDARAUTO when building one from scratch.