Courseiva
Visualize and analyze the dataeasyMultiple SelectObjective-mapped

PL-300 Visualize and analyze the data Practice Question

You are creating a Power BI report to analyze customer churn. You have a table with Customer ID, Churn Date, and other attributes. You want to create a measure that calculates the number of customers who churned in the last 30 days. Which THREE components do you need?

Answer choices

Why each option matters

Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.

Correct answer & explanation

A measure using CALCULATE, COUNTROWS, and DATESINPERIOD

The correct components are A, C, and D. A measure using CALCULATE, COUNTROWS, and DATESINPERIOD (A) is needed to dynamically count customers who churned in the last 30 days. A relationship between the date table and Churn Date (C) is required for time intelligence functions like DATESINPERIOD to work correctly. A separate date table marked as a date table (D) is necessary because Power BI time intelligence functions require a proper date table with continuous dates and a date type. Option B (a calculated column for 30-day flag) is not needed; the measure handles the filtering. Option E (a disconnected table with date range) is unnecessary because the regular date table relationship suffices.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • A measure using CALCULATE, COUNTROWS, and DATESINPERIOD

    Why this is correct

    This is the correct pattern for a dynamic 30-day churn count: CALCULATE modifies the filter context to filter rows meeting the condition, COUNTROWS counts rows in the churn fact table, and DATESINPERIOD generates a contiguous date range from the max visible date going back 30 days. Unlike a column, this measure is evaluated at query time, so it automatically respects report-level slicers, page filters, and drill-downs, and requires no storage overhead. The key is that DATESINPERIOD works only with a properly related date table.

  • A calculated column for 30-day flag

    Why it's wrong here

    A calculated column stamping a true/false flag for the last 30 days is evaluated only at data refresh time; it stores a static value in the model and cannot adjust when an end user selects a different date range or a different 'as-of' date. The same logic can be expressed in a measure using CALCULATE, COUNTROWS, and DATESINPERIOD, which is computed on the fly and therefore responds to the current filter context. Adding the column also increases the model size and can degrade refresh performance without any compensating benefit.

  • A relationship between date table and Churn Date

    Why this is correct

    The relationship between the date table and the Churn Date column is what makes filters from date slicers and time intelligence formulas propagate to the churn rows in the fact table. Without a relationship, a date table is isolated and measures such as COUNTROWS would ignore any date filtering, producing constant totals. With a many-to-one relationship, the date table's context flows to the fact table, enabling DATESINPERIOD to compute the correct rolling 30-day population.

  • A separate date table marked as date table

    Why this is correct

    A separate date table is mandatory for time intelligence functions because DAX requires a contiguous, unique set of dates and a known granularity to build period calculations; merely having a date column in the fact table is insufficient. Marking it as the date table via the 'Mark as Date Table' setting tells Power BI that this table defines the valid date range, which enables functions like DATESINPERIOD, TOTALYTD, and SAMEPERIODLASTYEAR to return correct results and support fiscal calendars. Without this step, time intelligence is unreliable or unavailable.

  • A disconnected table with date range

    Why it's wrong here

    A disconnected table with a custom date range is unnecessary here because it would require intricate DAX using TREATAS or calendar functions to manually transfer filter context from the disconnected table to the fact table, sacrificing performance and maintainability. Since you already have a connected date table that serves all slicing and time intelligence needs, adding a separate disconnected table simply duplicates functionality and opens the door for inconsistent filters. The extra layer of indirection provides no analytical benefit and complicates the model.

About these practice questions

This PL-300 question is part of Courseiva's 217-question bank — original exam-style content with full explanations and wrong-answer analysis, never real exam questions or exam dumps. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

JA

Written by Johnson Ajibi, MSc IT Security

Senior Network & Security Engineer · founder of Courseiva

This PL-300 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the PL-300 exam.