2014-12-23 98 views
0

我有一個蜂巢表「選項卡」,以下2個字段:「timewindow product_id_scanned」從蜂巢subquery1數據集成到其它子在蜂巢

我需要一個查詢,列出結果一樣:「PRODUCT_ID% count_seen_in_window」

在它的面前,查詢看起來像: ‘選擇ID,計數(不同timewindow)的ID從卡組/ TOT’

現在TOT來自它代表查詢時間間隔列表: 「從列表中選擇不同的時間窗口」

如何在一個查詢中得到我的結果?

回答

0

這是一定的蜂巢限制的變通方法的一點點,但希望它有助於:

SELECT 
    product_id_scanned, COUNT(DISTINCT timewindow)/tot 
FROM (
    SELECT 
     tab.product_id_scanned AS product_id_scanned, 
     tab.timewindow AS timewindow, 
     tot.tot AS tot 
    FROM 
     tab, (SELECT COUNT(DISTINCT timewindow) AS tot FROM tab) tot 
) tot_added 
GROUP BY product_id_scanned, tot; 

雖然不是特別優雅,這裏討論的方法是創建具有附加到tot價值的中介表每行都作爲額外的列。

+0

它工作正常。我試圖弄清楚「tot」是否可以用作標量值。從您的方法中,我瞭解到它可以作爲具有相同標量值的矢量對待。 –

+0

@AnantRaman我很高興它幫助 - 請接受我的答案(複選標記符號),如果你覺得它有用。值得注意的是,這裏仍然有優化的機會(現在我在一天後用新鮮的眼睛來看它) - 首先想到的是避免使用笛卡爾積來追加'tot'向量。 – rchang

+0

我錯過了「勾號」。當我在1節點僞羣集上運行配置單元查詢時,花費了大約100秒(預期的種類)。我的下一步是在Impala上運行查詢,然後是Map Reduce Program.I會讓你知道它是如何發生的。 –