Power BI Fundamentals

Chapter 13
Performance, Testing, and Solution Lifecycle

Certificate in Business Intelligence (Power Bi)
Power BI Fundamentals   •   Certificate

Performance, Testing, and Solution Lifecycle

Introduction

A Power BI solution is successful only when it is accurate, understandable, responsive, secure, and maintainable. A report that displays correct figures but takes thirty seconds to respond is operationally weak. A fast dashboard that contains incorrect measures is dangerous. Similarly, a technically sound model can lose value if users cannot interpret it or if no one knows how to update it safely.

Performance, testing, and lifecycle management are therefore connected disciplines. Performance engineering improves the speed and efficiency of a model and its reports. Testing provides evidence that the solution produces reliable results and supports intended decisions. Lifecycle management governs how the solution is documented, deployed, monitored, changed, and eventually retired.

This chapter presents practical foundations for improving Power BI solutions. It focuses on dimensional modelling, DAX measures, query reduction, diagnostics, usability testing, deployment, maintenance, and change control.

Learning Objectives

By the end of this chapter, you should be able to:

  • explain how model design affects Power BI performance;
  • distinguish storage-engine and formula-engine work at a conceptual level;
  • write efficient measures and reduce unnecessary query activity;
  • use Performance Analyzer and other diagnostic approaches systematically;
  • design tests for accuracy, usability, security, and refresh reliability;
  • document and deploy a Power BI solution responsibly;
  • establish maintenance and change-control practices; and
  • evaluate the limitations and governance risks of a Power BI implementation.

1. Understanding Performance in Power BI

Performance is multidimensional. Users experience performance as the time taken to open a report, change a filter, load a visual, or complete a refresh. Developers, however, must consider several underlying resources:

Performance dimensionTypical concernExample symptom
Report interactionTime required to render visualsA slicer takes several seconds to respond
Semantic modelSize and complexity of tables and relationshipsMemory pressure or slow queries
Data refreshTime and reliability of data loadingRefresh fails during working hours
Source systemCost imposed on databases or APIsExcessive or poorly folded queries
CapacityCPU, memory, and concurrencyPerformance deteriorates when many users connect
User experienceClarity and perceived responsivenessUsers cannot tell whether an action succeeded

A useful conceptual relationship is:

Ttotal ≈ Tsource + Tstorage + Tformula + Trender

Here, Ttotal is the approximate total response time; Tsource is time spent obtaining data from the source; Tstorage is time spent scanning compressed model data; Tformula is time spent evaluating DAX expressions; and Trender is time spent constructing the visual. This is not an exact engineering equation because operations can overlap, but it is a useful diagnostic model. It helps the developer ask where the delay occurs rather than changing DAX blindly.

Power BI uses a columnar, in-memory storage engine for imported data. Columns are compressed efficiently, especially when they contain repeated values. Queries that can be answered through simple scans and aggregations are often fast. More complex row-by-row calculations, excessive cardinality, large tables, and inefficient relationships can increase work.

In DirectQuery, data remains in the source system and report interactions generate queries against that source. This can reduce local storage requirements but makes performance more dependent on source indexing, network latency, query folding, concurrency, and database capacity. Composite models combine import and DirectQuery behaviour and require especially careful design.

2. Efficient Model Design

2.1 Star schema as the performance foundation

A star schema contains a central fact table surrounded by dimension tables. The fact table records events or transactions, such as sales lines. Dimension tables describe those events, such as Date, Product, Customer, and Store.

A typical model has the following structure:

  • FactSales: DateKey, ProductKey, CustomerKey, StoreKey, Quantity, SalesAmount, CostAmount
  • DimDate: DateKey, Date, Month, Quarter, Year
  • DimProduct: ProductKey, ProductName, Category, Brand
  • DimCustomer: CustomerKey, CustomerName, Segment
  • DimStore: StoreKey, StoreName, Region

Dimension-to-fact relationships should normally be one-to-many, with the dimension on the “one” side and the fact table on the “many” side. Filtering generally flows from dimensions to facts. This design is easier to understand and often produces more predictable query plans than a model built from many interconnected transactional tables.

2.2 Reduce unnecessary columns and rows

Every imported column consumes memory and may increase refresh and query work. Remove columns that are not needed for analysis, filtering, relationships, or auditing. Filter out obsolete rows where business requirements permit it. This should be done as early as possible, preferably at the source or during Power Query transformation.

Do not retain a high-precision timestamp if analysis requires only a date. Do not import descriptive text fields that are never displayed or filtered. However, removal must be controlled: a column that appears unused may be required by a measure, relationship, export, or future approved requirement.

2.3 Manage cardinality

Cardinality is the number of distinct values in a column. High-cardinality columns—such as transaction identifiers, long text, or timestamps—usually compress less efficiently than low-cardinality columns such as month or region. This does not mean that high-cardinality columns are always unacceptable; transaction IDs may be essential for audit. It means that their role should be deliberate.

Practical techniques include:

  • separating date and time where both are not needed together;
  • using integer surrogate keys for relationships where appropriate;
  • avoiding unnecessarily precise decimal values;
  • replacing repeated long text with dimension keys; and
  • retaining detailed identifiers only in a dedicated drill-through or detail model when possible.

2.4 Data types and summarization

Use the narrowest appropriate data type. Whole numbers generally require less storage than decimal numbers or text. Currency values should use a suitable fixed decimal type when financial precision is required. Correct data types also prevent implicit conversions and incorrect aggregations.

Set the default summarization of columns thoughtfully. A transaction number should not be summed. A quantity may be summed, while a unit price may require an average or a measure based on revenue divided by quantity. Incorrect default summarization is both a usability and accuracy problem.

2.5 Relationships and filter direction

Unnecessary bidirectional relationships can create ambiguity, unexpected filter propagation, and slower evaluation. Single-direction relationships from dimensions to facts are usually preferable. Bidirectional filtering may be justified in carefully designed scenarios, but it should be documented and tested.

Avoid many-to-many relationships unless the business relationship genuinely requires them. Where possible, resolve many-to-many structures with a bridge table. Ambiguous paths should be treated as a modelling defect rather than solved by adding arbitrary relationships.

3. Efficient DAX Measures

A measure is evaluated in the current filter context. This makes measures more reusable than calculated columns for many analytical purposes. For example:

Total Sales = SUM(FactSales[SalesAmount])

A measure such as Total Sales responds to product, date, region, and other filters without storing a separate result for every row.

3.1 Prefer measures to unnecessary calculated columns

Calculated columns are computed during refresh and stored in the model. They may be appropriate for row-level categorisation or relationship keys, but using them for every analytical calculation can enlarge the model. Measures calculate results when needed and often provide a more flexible solution.

For example, instead of storing a margin percentage on every sales row, define:

Total Cost = SUM(FactSales[CostAmount])
Gross Margin = [Total Sales] - [Total Cost]
Margin % = DIVIDE([Gross Margin], [Total Sales])

DIVIDE is preferable to the division operator when the denominator may be zero or blank because it handles the alternate result explicitly.

3.2 Use variables for clarity and repeated expressions

Variables can improve readability and prevent repeated evaluation of the same expression:

Margin % =
VAR Revenue = [Total Sales]
VAR Cost = [Total Cost]
VAR Margin = Revenue - Cost
RETURN
    DIVIDE(Margin, Revenue)

Variables do not automatically make every measure faster, but they make logic easier to inspect and maintain. They also reduce the risk of inconsistent repeated expressions.

3.3 Understand filter context and context transition

Filter context is the set of filters active when a measure is evaluated. Functions such as CALCULATE modify filter context. Context transition occurs when CALCULATE converts an existing row context into an equivalent filter context, particularly when used inside iterators or calculated columns.

A beginner-friendly example is:

Sales for 2025 =
CALCULATE(
    [Total Sales],
    DimDate[Year] = 2025
)

The measure changes the current context to include the condition that the year equals 2025. Developers should avoid removing filters more broadly than intended. ALL, REMOVEFILTERS, and similar functions can produce correct but surprising results if their scope is not carefully defined.

3.4 Avoid unnecessary iterators and broad scans

Iterators such as SUMX, FILTER, and ADDCOLUMNS are valuable but can require row-by-row evaluation. Use them when the business logic requires row-level calculation, not as a default replacement for simple aggregations.

For example, if SalesAmount already exists at the required grain, SUM(FactSales[SalesAmount]) is generally more direct than SUMX(FactSales, FactSales[Quantity] * FactSales[UnitPrice]). The latter is appropriate when revenue must genuinely be calculated from row-level quantity and price, but it may be unnecessary if a reliable amount column is available.

Measure optimisation must preserve meaning. A faster expression that ignores returns, discounts, tax rules, or currency conversion is not an improvement.

4. Query Reduction and Report Design

A report can be slow even when the model is well designed if it sends too many or overly complex queries. Each visual may generate one or more queries. Slicers, tooltips, conditional formatting, interactions, and hidden visuals can all contribute to query activity.

4.1 Reduce visual density

A page containing twenty-five visuals is likely to be more expensive and less usable than a page containing six purposeful visuals. Combine related information, use drill-through pages, and provide navigation to detailed analysis. Avoid displaying the same measure repeatedly in different visual forms without a clear user benefit.

4.2 Control interactions

Cross-highlighting can cause multiple visuals to recalculate when a user selects one data point. Review interactions and disable those that do not support the analytical task. A slicer that affects every visual may be appropriate, but a detailed chart may not need to respond to a decorative card.

4.3 Use aggregations and appropriate storage modes

Aggregations can provide summary data at a lower grain while retaining access to detailed data. They are most effective when the aggregation table and detail table are designed consistently and queries can be redirected appropriately.

Import mode generally provides fast interactive performance for data that can be refreshed within acceptable limits. DirectQuery is useful for very large or near-real-time data, but its dependence on the source system should be acknowledged. “Real time” does not automatically mean “fast”; a source database that cannot handle concurrent analytical queries will create a poor user experience.

4.4 Incremental refresh

For large historical tables, incremental refresh can reduce the amount of data processed on every refresh. A common approach is to refresh recent periods frequently while retaining older periods with less frequent changes. The policy must reflect the actual data-correction window. If historical sales can be amended for eighteen months, retaining only thirty days for refresh may produce inaccurate results.

5. Diagnostics and Performance Testing

Performance optimisation should be evidence-based. The basic cycle is:

  1. define an acceptable performance target;
  2. reproduce the problem consistently;
  3. measure the baseline;
  4. change one important factor;
  5. measure again; and
  6. document whether the change improved the result without changing accuracy.

5.1 Performance Analyzer

Power BI Desktop’s Performance Analyzer can record the time taken by visuals and help identify slow pages. It separates aspects such as DAX query time, visual display time, and other processing. The tool should be used with representative filters and realistic data volumes.

A slow visual may result from the measure, the number of categories, the visual type, interactions, or model design. Copying a query for external inspection can assist deeper analysis, but the diagnosis must remain connected to the user scenario.

5.2 Refresh diagnostics

Refresh testing should record duration, row counts, errors, source response, and whether query folding occurs where expected. A refresh that succeeds in development may fail in production because of credentials, gateway configuration, privacy settings, source throttling, or a larger data volume.

5.3 Baselines and acceptance criteria

A performance baseline is a recorded reference point. It may include:

TestBaseline measureExample acceptance criterion
Report openingTime to display usable landing pageLess than an agreed threshold
Slicer interactionTime to complete representative filterNo persistent freezing
RefreshDuration and success rateCompletes within operating window
ExportCompletion and correctnessExport finishes without truncation
Concurrent useResponse under expected loadMeets service expectation

Exact targets should be agreed with stakeholders rather than copied from another organisation. A financial close report and an occasional management dashboard have different tolerances.

6. Testing Power BI Solutions

Testing should cover more than whether the report opens. A practical test strategy contains several layers.

6.1 Data and transformation testing

Check that source data is complete, correctly typed, and transformed as specified. Test null handling, duplicate keys, unexpected categories, date boundaries, currency codes, and late-arriving records. Reconciliation tests compare Power BI totals with an authoritative source for defined periods and filters.

6.2 Measure and business-rule testing

Each important measure should have test cases. For example, a gross-margin measure should be checked for:

  • a period with normal sales;
  • zero sales;
  • returns or negative quantities;
  • missing cost values;
  • multiple currencies if relevant; and
  • totals compared with an approved financial statement.

A total that looks plausible is not evidence of correctness. Test values should include small, manually verifiable datasets as well as production-like data.

6.3 Relationship and filter testing

Select a product, date, customer, and region independently and together. Confirm that filters propagate as intended and do not create duplicated totals. Test the behaviour of “unknown” or unmatched dimension keys. A fact row without a matching product should not silently disappear unless that is an explicit business rule.

6.4 Security testing

Row-level security must be tested using representative roles and accounts. Verify both permitted and prohibited data. Test users who belong to multiple roles, because role intersections can produce results different from those expected by the developer. Security testing should occur after deployment as well as in Desktop or a development workspace.

6.5 Usability and accessibility testing

Usability testing asks whether users can complete their tasks efficiently and correctly. Observe users locating a KPI, applying a date filter, interpreting a chart, and exporting or drilling through to detail. Accessibility includes sufficient contrast, meaningful titles, keyboard navigation where applicable, alt text, logical tab order, and avoiding colour as the only indicator of status.

6.6 Regression testing

Regression testing checks that a change has not damaged existing behaviour. A new product category, revised calendar, or modified measure may affect many pages. Maintain a small suite of representative test scenarios and expected outcomes. Automated comparison may be possible through deployment and validation tools, but human review remains important for layout and interpretation.

7. Documentation and Solution Lifecycle

A Power BI solution should be treated as an information product with a lifecycle:

  1. Initiation: define the decision problem, users, scope, and success criteria.
  2. Development: build the model, transformations, measures, report, and security design.
  3. Testing: validate data, calculations, performance, usability, and security.
  4. Deployment: promote an approved version to a controlled production environment.
  5. Operation: monitor refreshes, usage, incidents, and performance.
  6. Change: assess, approve, implement, and test modifications.
  7. Retirement: archive or remove the solution when it no longer provides value.

Documentation should identify data sources, owners, refresh schedules, relationships, key measures, security roles, assumptions, known limitations, and support contacts. A measure catalogue is particularly valuable. It should state the business definition, formula logic in plain language, exclusions, time basis, and accountable owner.

Lineage information helps users understand where data comes from and what downstream assets may be affected by a change. Documentation must be maintained as part of development, not written only at the end.

8. Deployment, Maintenance, and Change Control

Separate development, test, and production environments reduce the risk of untested changes reaching users. Deployment pipelines or equivalent controlled processes can promote content between stages. Parameters should be used to distinguish environments where appropriate, and credentials must never be embedded in files or shared insecurely.

Change control should classify requests by risk. A spelling correction may require limited testing; a change to revenue recognition requires formal impact analysis, business approval, regression testing, and communication.

A change record should include:

  • requestor and business justification;
  • affected reports, datasets, measures, and sources;
  • risk and dependency assessment;
  • test evidence;
  • approval decision;
  • implementation date and responsible person; and
  • rollback or recovery plan.

Maintenance includes monitoring refresh failures, reviewing unused reports, checking gateway or connection health, updating documentation, managing capacity, and periodically reviewing access. Owners should distinguish between an incident, a defect, a data-quality issue, and a new requirement because each requires a different response.

9. Illustrative Case: Regional Retail Performance Model

Background

A fictional retail organisation, Northstar Stores, uses a Power BI report for weekly regional sales reviews. The report contains sales, margin, inventory, and customer visuals. Users report that the landing page takes fifteen seconds to open and that selecting a region sometimes causes a refresh timeout.

Problem analysis

The model contains duplicated product descriptions in the fact table, a timestamp column with second-level precision, several bidirectional relationships, and calculated columns for multiple ratios. The landing page contains twenty-two visuals, including several versions of the same sales chart. Performance Analyzer shows that four visuals generate particularly expensive DAX queries. The source refresh also loads the complete five-year transaction history every morning.

Approach and solution

The team first established a baseline using a defined set of filters and recorded both opening time and regional selection time. It then:

  • created Product and Date dimensions and removed repeated descriptive columns from the fact table;
  • separated the date required for analysis from the operational timestamp retained for detail investigation;
  • changed unnecessary bidirectional relationships to single-direction relationships;
  • replaced repeated calculated ratios with measures;
  • reduced the landing page to eight decision-focused visuals;
  • disabled irrelevant visual interactions;
  • introduced incremental refresh for stable historical periods; and
  • created test cases comparing regional totals with the approved sales system.

The team did not remove transaction identifiers because audit users required them. Instead, detailed records were placed on a separate drill-through page. This illustrates an important principle: optimisation should respond to requirements rather than discard information indiscriminately.

Outcome

After deployment to a controlled test workspace, the report responded substantially faster under representative filters, and refreshes completed within the operating window. The organisation also gained a documented measure catalogue and an agreed process for approving changes. The improvement was not attributed to one “magic” DAX rewrite; it resulted from coordinated model, report, refresh, and governance changes.

Learning points

The case demonstrates that performance is a system property. A model can be improved by reducing unnecessary data, simplifying relationships, reducing visual query demand, and aligning refresh policy with data volatility. Testing and documentation ensure that speed improvements do not undermine accuracy or auditability.

10. Limitations, Governance, and Contemporary Practice

Performance techniques are context-dependent. Import models may not be suitable where data must remain at the source for regulatory, security, or freshness reasons. Aggregations may add design complexity. Incremental refresh cannot correct a source system that frequently rewrites old history unless the policy includes the relevant correction window. DirectQuery can preserve source-level control but may expose users to source outages and variable latency.

Governance is therefore inseparable from technical design. Access should follow least privilege. Sensitive personal or financial information should be minimised, classified, and protected. Row-level security is not a substitute for appropriate workspace permissions or source-system controls. Export permissions and subscription features should be considered in the threat model.

AI-assisted features can help generate summaries, suggest visuals, or accelerate development, but they do not replace validation. Automatically generated descriptions or narratives may misrepresent a measure, omit a limitation, or expose sensitive information. Organisations should define approved use, review outputs, protect confidential data, and retain human accountability for published decisions.

Contemporary Power BI practice increasingly emphasises semantic models as governed, reusable analytical assets rather than isolated report files. Shared measures, certified datasets, deployment automation, monitoring, lineage, and usage analysis support consistency. Nevertheless, central governance should not eliminate local analytical flexibility; a balanced model combines standards with clearly controlled self-service.

Best-Practice Checklist

Before publishing a solution, confirm that:

  • the model follows a clear dimensional structure;
  • unnecessary columns, rows, and high-cardinality fields have been reviewed;
  • relationships and filter directions are intentional;
  • measures use appropriate logic and handle blanks or zero denominators;
  • report pages contain purposeful visuals and controlled interactions;
  • performance has been measured with representative data and filters;
  • refresh, security, reconciliation, and usability tests have passed;
  • documentation identifies definitions, owners, sources, and limitations;
  • deployment separates development, testing, and production;
  • changes have approval, evidence, and rollback planning; and
  • monitoring and maintenance responsibilities are assigned.

Chapter Summary

Power BI performance depends on the combined behaviour of the data source, model, DAX measures, report visuals, refresh process, and capacity. Star schemas, appropriate data types, controlled cardinality, simple relationships, and deliberate storage choices provide a strong foundation. Measures should express business logic clearly, while iterators and broad filter-removal functions should be used with care.

Query reduction is achieved through purposeful page design, limited visual density, controlled interactions, aggregations where appropriate, and refresh policies aligned with data change. Performance Analyzer and structured baselines support evidence-based diagnosis.

Testing must address data transformations, measures, relationships, security, usability, accessibility, refresh reliability, and regression risk. A professional lifecycle separates development, testing, and production; documents definitions and lineage; monitors operation; and controls changes through impact assessment, approval, testing, and rollback planning. Governance, privacy, and human review remain essential even when AI-assisted capabilities are used.

Key Terms

Star schema: A model with a central fact table connected to descriptive dimension tables.

Fact table: A table containing measurable business events or transactions.

Dimension table: A table containing descriptive attributes used to filter or group facts.

Cardinality: The number of distinct values in a column or the relationship characteristics between tables.

Storage engine: The Power BI component that stores and retrieves compressed model data.

Formula engine: The component that evaluates DAX expressions and complex calculations.

Filter context: The set of filters active when a measure is evaluated.

Context transition: The conversion of row context into filter context, commonly through CALCULATE.

Measure: A DAX calculation evaluated dynamically in the current context.

Calculated column: A column computed during refresh and stored in the model.

Query reduction: Design practices that reduce unnecessary or expensive queries generated by report interactions.

Query folding: The translation of Power Query transformations into operations performed by the source system.

Incremental refresh: A policy that refreshes changing data more frequently than stable historical data.

Performance baseline: A recorded reference measurement used to evaluate improvement or degradation.

Regression testing: Testing that confirms existing functionality remains correct after a change.

Row-level security: A mechanism that restricts data returned according to the user or role.

Lineage: Information describing the origin of data and relationships among dependent analytical assets.

Change control: A formal process for assessing, approving, implementing, and recording changes.

Deployment pipeline: A controlled process for promoting content through development, test, and production stages.

Semantic model: The governed analytical model that defines tables, relationships, measures, and business meaning.

Review Questions

Short Answer Questions

  1. Why is a star schema generally preferred for Power BI analytical models?
  2. What is the difference between a measure and a calculated column?
  3. What information can Performance Analyzer provide?
  4. Why should bidirectional relationships be used cautiously?
  5. What is the purpose of a performance baseline?

Long Answer Questions

  1. Explain how reducing columns, rows, and cardinality can improve model performance while preserving analytical usefulness.
  2. Discuss the role of filter context, CALCULATE, and variables in creating maintainable DAX measures.
  3. Describe a comprehensive testing strategy for a Power BI solution.
  4. Explain how development, test, and production environments support safe deployment.
  5. Discuss the relationship between documentation, governance, maintenance, and change control.

Analytical / Application Questions

  1. A report contains a large fact table, fifteen visuals on one page, and several bidirectional relationships. Develop a prioritised investigation and improvement plan, explaining what evidence you would collect.
  2. A finance measure is fast but excludes late adjustments from the previous financial year. Evaluate whether the optimisation is acceptable and propose a suitable refresh and testing approach.
  3. Design acceptance tests for a regional sales dashboard that includes row-level security, incremental refresh, exports, and margin calculations. State what evidence would justify production deployment.

Multiple Choice Questions with Answers

Question 1

Which model structure is generally most suitable for a Power BI analytical model?

A. A star schema with fact and dimension tables

B. A single table containing every source column

C. A network of unrestricted bidirectional relationships

D. A model consisting only of calculated columns

Correct Answer: A. A star schema with fact and dimension tables

Question 2

Which action is most likely to reduce unnecessary model size?

A. Importing every source column for future use

B. Removing unused columns and filtering out irrelevant rows

C. Converting all numeric columns to text

D. Adding duplicate descriptions to the fact table

Correct Answer: B. Removing unused columns and filtering out irrelevant rows

Question 3

What is the main purpose of a Power BI measure?

A. To store a fixed result for every source row

B. To define a dynamic calculation evaluated in filter context

C. To replace every relationship in a model

D. To prevent all report interactions

Correct Answer: B. To define a dynamic calculation evaluated in filter context

Question 4

Why should unnecessary bidirectional relationships be avoided?

A. They prevent all filtering from working

B. They can create ambiguity and unexpected filter propagation

C. They are required only for date tables

D. They automatically remove unmatched records

Correct Answer: B. They can create ambiguity and unexpected filter propagation

Question 5

Which tool can help identify the time spent by individual report visuals?

A. Performance Analyzer

B. Text editor

C. Role manager only

D. Bookmark navigator

Correct Answer: A. Performance Analyzer

Question 6

Which testing activity verifies that users see only the data permitted for their roles?

A. Cardinality testing

B. Row-level security testing

C. Colour testing

D. Query folding testing

Correct Answer: B. Row-level security testing

Question 7

What is a principal benefit of incremental refresh?

A. It eliminates the need for data validation

B. It refreshes changing periods more frequently than stable history

C. It converts DirectQuery automatically into import mode

D. It guarantees that all historical data is never changed

Correct Answer: B. It refreshes changing periods more frequently than stable history

Question 8

Which item should normally be included in a change record?

A. Only the developer’s preferred colour palette

B. The affected assets, risk assessment, test evidence, and approval

C. A list of unrelated reports

D. An instruction to bypass testing

Correct Answer: B. The affected assets, risk assessment, test evidence, and approval

Question 9

What is query reduction primarily concerned with?

A. Reducing unnecessary or expensive queries generated by report design

B. Increasing the number of visuals on every page

C. Removing all measures from the semantic model

D. Disabling data refresh permanently

Correct Answer: A. Reducing unnecessary or expensive queries generated by report design

Question 10

Why should AI-generated Power BI narratives or suggestions be reviewed by a human?

A. AI outputs are always mathematically invalid

B. They may misrepresent measures, omit limitations, or expose sensitive information

C. Human review makes all models import mode

D. Review is needed only when no data exists

Correct Answer: B. They may misrepresent measures, omit limitations, or expose sensitive information

Power BI Fundamentals
Chapter 13 of 14