Bigquery - 交叉连接的替代方案

Posted

技术标签:

【中文标题】Bigquery - 交叉连接的替代方案【英文标题】:Bigquery - alternative for cross join 【发布时间】:2016-08-04 22:32:05 【问题描述】:

除了我在查询中指定的列之外,我的输出中还必须包含以下列 过去 7 天内每个用户 ID 的 (nativeprodID) 计数 过去 15 天内每个用户 ID 的 (nativeProdID) 计数 过去 30 天内每个用户 ID 的 (nativeprodID) 计数

选择用户 ID、nativeprodID、nativeVersion、nativeVersionName、 MAX(StartTime) AS Last_Used_TimeStamp, 来自 [产品表] 在哪里 NativeProd ='AAA' AND GlobalPod='AAA' 按 1、2、3、4 分组 限制 10

我正在考虑使用交叉连接,但还有其他更简单的技术吗?

【问题讨论】:

【参考方案1】:

下面试试

SELECT 
  userid, 
  nativeprodID, 
  nativeVersion, 
  nativeVersionName, 
  MAX(StartTime) AS Last_Used_TimeStamp, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -7, "DAY")), 1, 0)) AS count_last_7_days, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -15, "DAY")), 1, 0)) AS count_last_15_days, 
  SUM(IF(DATE(StartTime) > DATE(DATE_ADD(CURRENT_DATE() , -30, "DAY")), 1, 0)) AS count_last_30_days, 
FROM [ProdTable] 
WHERE NativeProd ='AAA' AND GlobalPod='AAA' 
GROUP BY 1,2,3,4 
LIMIT 10 

【讨论】:

以上是关于Bigquery - 交叉连接的替代方案的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:无效日期错误

Spark BigQuery 连接器:写入 ARRAY 类型会导致异常:“”无效值:ARRAY 不是有效值“”

BigQuery 中 Hive 的显示分区的替代方案

BigQuery 交叉联接失败

在 BigQuery 中恢复过期的 Firebase 表并将数据保存时间超过 60 天

BigQuery 中的 CONDITIONAL_TRUE_EVENT 的替代方案,带有 LAG() 函数?