N
Size: a a a
N
DZ
DZ
N
DZ
DZ
DZ
peopleDF("id")
, вот такое работает.join(broadcast(peopleDF.alias("customer_dim")), factDF("cust_id") === $"customer_dim.id", "left") .join(broadcast(peopleDF.alias("vendor_dim")), factDF("vend_id") === $"vendor_dim.id", "left")
DZ
DZ
N
DZ
DZ
А
А
drop table fact1;
create table fact1 as select level as id, mod(level,5) as fk1, mod(level+1,5) as fk2, '**' as pad from dual connect by level < 100000;
create table dim1 as select level as id, '**' as pad from dual connect by level <= 5;
explain plan for
select *
from fact1 f
join dim1 d on f.fk1 = d.id or f.fk2 = d.id;
SELECT * FROM table(DBMS_XPLAN.DISPLAY);
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 168K| 10M| 158 (2)| 00:00:01 |
| 1 | VIEW | VW_ORE_571BA3FE | 168K| 10M| 158 (2)| 00:00:01 |
| 2 | UNION-ALL | | | | | |
|* 3 | HASH JOIN | | 93737 | 6224K| 79 (2)| 00:00:01 |
| 4 | TABLE ACCESS STORAGE FULL | DIM1 | 5 | 105 | 3 (0)| 00:00:01 |
| 5 | TABLE ACCESS STORAGE FULL | FACT1 | 93737 | 4302K| 76 (2)| 00:00:01 |
|* 6 | HASH JOIN | | 74990 | 4979K| 79 (2)| 00:00:01 |
| 7 | JOIN FILTER CREATE | :BF0000 | 5 | 105 | 3 (0)| 00:00:01 |
| 8 | TABLE ACCESS STORAGE FULL| DIM1 | 5 | 105 | 3 (0)| 00:00:01 |
| 9 | JOIN FILTER USE | :BF0000 | 93737 | 4302K| 76 (2)| 00:00:01 |
|* 10 | TABLE ACCESS STORAGE FULL| FACT1 | 93737 | 4302K| 76 (2)| 00:00:01 |
-------------------------------------------------------------------------------------------------
А
M
AZ
AZ
DZ
DZ