我有两个具有以下结构的立方体:
-- cube 1
select
dimension1,
dimension2,
sum(measure1),
sum(measure2),
grouping__id
from
table1
group by
dimension1,
dimension2
with cube
;
-- cube 2
select
dimension1,
dimension2,
count(distinct measure3),
grouping__id
from
table2
group by
dimension1,
dimension2
with cube
;
我想将这两个立方体连接在一起,这样就有一个带有measure1,measure2和measure3的立方体作为事实。拥有两个独立的多维数据集的原因是由于第二个多维数据集涉及计数不同的操作,这个操作太昂贵而无法在一个步骤中运行。
我尝试加入grouping__id和nvl(a.dimension1,0)= nvl(b.dimension1,0)(对于每个维度)。但是,这似乎创建了更多的行。即使使用左连接,连接立方体中的记录数也会大于左立方体。
如何连接具有相同尺寸的两个立方体,以便不会创建重复/无关的记录?
答案 0 :(得分:0)
事实证明,难度只是我选择的NULL的默认值;当0是其中一个维度的可能值时,选择0会导致许多无关的记录。最后,我将0更改为-1000(我确认的值不是数据中包含的值)并按上述方式加入。
因此,最终查询如下:
select
c1.dimension1,
c2.dimension2,
c1.measure1,
c1.measure2,
c2.measure3,
c1.grouping__id
from
cube1 c1
join cube2 c2 on c1.grouping__id = c2.grouping__id
and nvl(c1.dimension1, -1000) = nvl(c2.dimension1, -1000)
and nvl(c1.dimension2, -1000) = nvl(c2.dimension2, -1000)
;