回覆列表
  • 1 # 於萌萌593

    kylin的維度組合預設的是2^n;但是在實際場景中簡單的使用這種計算方式去計算生成的維度組合,對於維度數來那個超過40個的,那麼生成的cubeId的數量是4096;如果維度的數量超過這個值,那麼在構建和儲存集查詢方面都可能存在問題,此文章從以下四個層次來管理dinmensions:【以下所有的設定都是基於各司的業務設定,非通用模版】

    設:共有維度10個維度:分別為A,B,C,D,E,F,G,H,I,J[其中維度A,B,C,D四個維度直接存在層級關係];

    A:全國;B:省;C:市,D:縣;E:單價;F:數量;G:商品;H:員工;I:評級:J:工資

    1、聚合組(aggregation groups):

    聚合組,主要是業務對於維度分為多類,之間不會有交集或者幾乎沒有交集的各個維度集合進行分類:eg:倉庫管理者關注的是商品,出報告或者分析考慮EFG這幾個維度;人事部關注的物件是人,考勤或者工資的定級等考慮的是HIJ這個幾個維度組合;上層管理者年底想看一下某一個員工賣出了多少價值的東西,這個時候才會將EFGHIJ這幾個維度同時用到,由於使用的頻率低,所以這個結果不會預先處理好,只有到使用的時候實時計算。此時我們就可以分兩個聚合組ABCDEFG和ABCDHIJ;來減少cubeId的生成。

    2、必須維度(mandatory dimensions):

    必須must,一定會出現的維度,每次查詢都會出現的維度;eg:對於倉庫管理員來說,在核查商品的時候,商品的名稱及數量是他每次核查必須都關注的物件,那麼在系統查詢的時候這兩個維度是必須出現的,這個時候就可以把FG設定成必須維度。此時的維度數量是2^(10-2)=256,2^(N-x),以此來減少cubeId的數量

    3、層次維度(hirearchy dimensions):

    層次維度,就是一些維度之間存在一定的層級關係,就像一個家庭,爺爺、爸爸、哥哥、妹妹等,這也算一個層次。eg:總公司想看一下各個地方的商品儲存情況,此時的地區就可以以層級維度的進行設計;ABCD,此時生成的組合為A,AB,ABC,ABCD,*;5中cube可以用N+1的方式計算,以此來減少cubeId的數量

    4、聯合維度(joint dimensions):

    聯合維度,將多個維度繫結在一起,當一個來進行構建,在查詢的時候這些維度總是一起組合

  • 中秋節和大豐收的關聯?
  • 英雄聯盟,要怎樣做才稱得上一個合格的職業選手?