MicroStrategy ONE
Cartesian Join Warning
The Cartesian Join Warning indicates the action that occurs when the Analytical Engine generates a report that contains a Cartesian join. In a Cartesian join, every row in one table is joined to every row in the other table. The query returns every possible row combination of the two tables, so a Cartesian join is usually costly to perform. Since a Cartesian join of two warehouse tables is much more costly than a Cartesian join of two intermediate tables, additional options are included to govern these cases.
The options for this property are
- Execute
When a Cartesian join occurs, the report is executed without any warning.
- Cancel execution
When a Cartesian join occurs, report execution is canceled without any warning.
- Cancel execution only when warehouse table is involved in either side of Cartesian join
A Cartesian join is allowed only when all tables involved in it are intermediate tables. No warning is sent.
- If only one side of Cartesian join contains warehouse tables, SQL will be executed without warning
A Cartesian join is allowed if only one warehouse table is involved, otherwise it is canceled without warning.
-
Use default inherited value
Some Cartesian joins are not a direct table-to-table join. If one join Cartesian joins to another join, and one of the joins contains a warehouse table (not an intermediate table), then the execution is either canceled or allowed depending on the option selected.
When a Cartesian join is performed between the join of two intermediate tables (TT_A join TT_B) and the join of an intermediate table and a warehouse table (TT_C join WH_D), the following happens:
- When Cancel execution only when warehouse table is involved in either side of Cartesian join is selected, the report is canceled. In the above example, execution is canceled because a warehouse table is used, even though TT_A, TT_B, and TT_C are all intermediate tables.
- When If only one side of Cartesian is selected, the report runs without warning. In the above example, execution continues because a warehouse table (WH_D) is used on only one side of the join.