calume中的bigquery倍数

时间:2016-08-05 13:41:06

标签: google-bigquery

我必须执行以下逻辑 我的输出表应该有每个userid的以下字段。 userid,prodid,版本,最后使用时间 - 我将使用MAX(starttime),calculate1将是prodname = RX * 10最近1天,计算2将是prodname = RX * 10最近7天

对于列计算1和计算2,我可以编写单独的选择查询并在where子句中提供时间段然后加入但是在单个查询中执行此操作的更有效方法是什么?

SELECT userid, prodID, Version, 
MAX(StartTime) AS Last_Used_TimeStamp, 
FROM  
[ProdTable] 
WHERE NativeProd ='AAA' 
AND GlobalPod='AAA'
GROUP BY 1,2,3,4 

SELECT userid, COUNT(prodname)*10 AS calculation1 
from [prodtable] 
where prod ='AAA' 
AND Date(startTime) = CURRENT_DATE() -1

1 个答案:

答案 0 :(得分:2)

查询中存在一些混淆,请确保两个查询中的名称一致。在您的第二个查询中,我假设您的计数是按用户ID分组。在这种情况下,您可以使用SUM(CASE ..)在一个查询中实现两个计算。

SELECT userid, 
       SUM(CASE WHEN StartTime >= DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY') THEN 1 ELSE 0 END) AS calculation1,
       SUM(CASE WHEN StartTime >= DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY') THEN 1 ELSE 0 END) AS calculation2
FROM [ProdTable]
WHERE prod = 'AAA'
GROUP BY userid

另外,如果要将Last_Used_TimeStamp查询的过程与计算查询集成,我想我们可以使用PARTITION BY函数来实现目标。