我正在使用Aster Basket_Generator功能从购买表(retail_purchases)计算一个篮子。我可以使用以下代码创建购物篮:
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 :(得分:0)
来自basket_generator
上的Aster文档:
ACCUMULATE子句中的列应该是列中的列的子集 PARTITION BY子句。否则,确定性属性不是 保证。
因此,您的方法并不成立,因为 sales_amt 不属于 PARTION BY (并且因为价格会发生变化)。
一种选择是将basket_generator
的结果放入新表中,然后将其加入包含价格的产品目录中 - 结果表将包含计算平均销售价格的价格。