2016-02-24 46 views
1

我有兩個立方體結構如下:如何加入Apache的配置單元立方體與相同尺寸

-- 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 
; 

我想這兩個立方體聯結在一起,這樣有與措施1,measure2一個多維數據集,作爲事實來衡量。有兩個獨立的多維數據集的原因是由於第二個多維數據集涉及一個數量不同的操作,這個操作在單個步驟中運行起來太昂貴。

我曾嘗試加入grouping__id和nvl(a.dimension1,0)= nvl(b.dimension1,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) 
; 
相關問題