在查询执行期间超过了资源限制:无法在分配的内存中执行查询。
有没有办法在BigQuery中增加分配的内存?
这是我的查询语句,我不知道如何简化它,但如果您有任何建议,我会接受的。
SELECT
row_number() over() as rowNumber,
game,
app_version,
event_date,
user_pseudo_id,
event_name,
event_timestamp,
country,
platform
FROM
`mediation_time_BASE`
以下是完整的错误信息:
在查询执行过程中资源超标:指定内存无法执行此查询。峰值使用率:限制的146%。最消耗内存的操作:分析OVER()语句:98%;其他/未指定:2%。
编辑: 这里的查询表示事件开始和结束的列表,我需要将开始事件与其结束链接起来,因此我遵循此提示:https://www.interfacett.com/blogs/how-to-use-values-from-previous-or-next-rows-in-a-query-in-sql-server/ 为此,我需要使用row_number()获取行,并将这个子查询分成两个部分(一个是事件开始,另一个是事件结束),然后将它们连接在一起,并按照下面的方式得到每个事件的开始和结束时间(其中subquery表示带有row_number()的查询):
SELECT
(case when lead(inter.rowNumber) OVER(ORDER BY inter.rowNumber) - inter.rownumber =1
then lead(inter.rowNumber) OVER(ORDER BY inter.rowNumber)
else inter.rownumber end) as rowNumber,
min(inter_success.rowNumber) as rowNumber_success,
inter.game,
inter.app_version,
inter.event_date,
inter.user_pseudo_id,
inter.event_timestamp as event_start,
min(inter_success.event_timestamp) as event_end,
inter_success.event_name as results
FROM
(SELECT * FROM `subquery` where event_name = 'interstitial_fetch') as inter INNER JOIN
(SELECT * FROM `subquery` where event_name = 'interstitial_fetch_success') as inter_success
ON inter.rowNumber < inter_success.rowNumber and inter.game= inter_success.game and inter.app_version = inter_success.app_version and inter.user_pseudo_id = inter_success.user_pseudo_id
GROUP BY inter.rowNumber,inter.game,inter.app_version,inter.event_date,inter.user_pseudo_id,inter.event_timestamp,inter_success.event_name
这在小数据集上运行良好,但对于5900万行的数据集就会出现问题...
row_number() over() as rowNumber
,会发生什么? - Cloud Ace Wenyuan Jiang