INTERSECT returns rows of its first table that appear in the second

Create model calculations by using DAX
Answer Correct answer: C — INTERSECT keeps the first table's rows that also appear in the second, so ProductList holds matched rows of ProductsGroupA.

You are reviewing a Power BI data model. You have a calculated table that has the following definition. ProductList = INTERSECT ( ProductsGroupA, ProductsGroupB ) You need to identify the results of the DAX expression. Which rows will be returned in ProductList?

  1. all the rows in ProductsGroupB that have a matching row in ProductsGroupA
  2. all the rows in both tables
  3. all the rows in ProductsGroupA that have a matching row in ProductsGroupB Correct Answer
  4. all the rows in ProductsGroupA that have no matching row in ProductsGroupB.

Community Votes

C
100%

100% of anonymous learners picked answer C. Votes are pick records left by other test-takers — they are not the verified answer.

Community Insight

DAX INTERSECT is order-dependent: it returns the rows of the first table expression that also exist in the second — the result's column lineage comes entirely from the left table.

A calculated table defined as INTERSECT(ProductsGroupA, ProductsGroupB) must be evaluated to know which rows appear in the result.

Assuming intersection is order-independent like set theory — if the arguments were swapped, the result would carry ProductsGroupB's columns and rows instead, so A and C are not both correct.

Community Discussion (8 comments)

INDEAVR 👍 13 Selected: C
C. all the rows in ProductsGroupA that have a matching row in ProductsGroupB
jaume 👍 1 Selected: C
INTERSECT return the row-wise intersection of two tables. This means it retrieves only the rows that are present in both table expressions
rcaliandro 👍 1 Selected: C
C - all the rows in ProductsGroupA that have a matching row in ProductsGroupB
shahrzadkhb 👍 1 Selected: C
The answer is correct. INTERSECT(<table_expression1>, <table_expression2>) Duplicate rows are retained. If a row appears in table_expression1 and table_expression2, it and any duplicates in table_expression_1 are included in the result set. Reference: https://learn.microsoft.com/sv-se/dax/intersect-function-dax
iamamantrivedi 👍 4
The INTERSECT function in DAX is order-independent. It returns the common rows between two tables, regardless of the order in which you specify the tables. both a and c are correct.
rajukg 👍 2
Intersect is not commutative. In general, Intersect(T1, T2) will have a different result set than Intersect(T2, T1). Duplicate rows are retained. If a row appears in table_expression1 and table_expression2, it and all duplicates in table_expression_1 are included in the result set.
Florinuca 👍 1
The correct answer is C. See the example : https://learn.microsoft.com/en-us/dax/intersect-function-dax "Intersect is not commutative. In general, Intersect(T1, T2) will have a different result set than Intersect(T2, T1)."
Stehi 👍 3
Would not A and C be both correct? ince INTERSECT finds rows that exist in both tables, the statement is correct from the perspective of either table—whether you're looking for matches in ProductsGroupA against ProductsGroupB or vice versa. The result is a table with rows that are common to both.

Comments & Corrections

No comments yet — spotted an error or have a note? Share it below.

Log in to comment, report an error, or add a note about this question.

Submitted for moderation before publishing. Keep it helpful and respectful.

Expert Analysis

Why the Answer Is Correct

The DAX INTERSECT documentation defines the function as returning the rows of the left table that appear in the right table, preserving duplicates and using the left table's column naming and lineage. With INTERSECT(ProductsGroupA, ProductsGroupB), the left table is ProductsGroupA, so the result is all rows of ProductsGroupA that have a matching row in ProductsGroupB — option C.

Why the Other Options Are Wrong

Option A describes rows of ProductsGroupB matched in ProductsGroupA, which is the result of reversing the arguments to INTERSECT(ProductsGroupB, ProductsGroupA) — a different calculated table with different lineage. Option B describes a union-like result containing rows of both tables, which is the domain of UNION, not INTERSECT. Option D describes an anti-join (rows of the first table with no match in the second), which is closer to EXCEPT than to INTERSECT.

Community Comment Notes

One commenter claims INTERSECT is order-independent and that both A and C are correct — the documentation contradicts this by specifying left-table lineage and left-table rows. Every other comment and the unanimous vote identify C, with one quoting the function definition on duplicate retention and left-table semantics.

Official Reference

Related Analysis

Practice All PL-300 Questions

Access 116 questions with complete answers and detailed explanations.

View Full PL-300 Practice Test →

← Back to PL-300 Study Guide