2013-07-23 54 views
1

我正在使用Aster Basket_Generator函數從購買表(retail_purchases)中計算購物籃。我可以用下面的代碼創建一個沒有問題的籃子:如何使用Aster Basket_Generator函數計算聚合

SELECT order_number, gsi_sku1, gsi_sku2, Count(1) 
FROM basket_generator(
    ON retail_purchases 
    PARTITION BY order_number 
    BASKET_SIZE(2) 
    BASKET_ITEM('gsi_sku') 
    ACCUMULATE('order_number') 
) 
WHERE gsi_sku1 in (11001788, 12002389) 
GROUP BY 1, 2, 3; 
LIMIT 10; 

我想怎麼做。另外,是計算每個籃子的平均值。理想情況下,這將作爲一列返回給我,但我會完全滿意籃子中每件商品的平均銷售價格。

我已經試過如下:

SELECT order_number, gsi_sku1, gsi_sku2, avg(sales_amt), Count(1) 
FROM basket_generator(
    ON retail_purchases 
    PARTITION BY order_number 
    BASKET_SIZE(2) 
    BASKET_ITEM('gsi_sku') 
    ACCUMULATE('order_number', 'sales_amt') 
) 
WHERE gsi_sku1 in (11001788, 12002389) 
GROUP BY 1, 2, 3; 
LIMIT 10; 

但AVG(sales_amt)列似乎並不被返回正確的值。使用Aster Basket_Generator分析函數時,推薦計算籃子聚合的方法是什麼?

+0

@topchef,什麼是'sql-mr',它在這裏有什麼關係? – Charles

+0

函數_basket_generator_是Aster Analytics Foundation的一部分,Aster Analytics Foundation是Aster軟件包含的一組分析函數。所有這些功能都是SQL-MR功能。 SQL-MR是Aster中的map-reduce框架,使用它可以透明地在SQL代碼中實現和運行map-reduce任務(使用Java或其他語言)。 – topchef

回答

0

從紫菀文檔上basket_generator

列累加子句中應列的一個子集 的PARTITION BY子句。否則確定性屬性不是 保證。

因此,你的做法不成立的sales_amt沒有被(這是正確的,因爲價格的變化)PARTION的一部分。

一種選擇是將basket_generator的結果放入新表格中,然後將其加入到包含價格的產品目錄中 - 結果表格將包含計算平均銷售價格的價格。