Sql 在Bigquery的LIMIT子句中从视图传递变量
我需要创建一个变量来存储要筛选的用户数。基本上,我需要检查一个用户在一定数量的月份内生成了多少事件,然后只使用前几个用户。 我注意到Bigquery没有设置变量的功能,因此我创建了一个包含我的变量的视图 我有以下Bigquery SQL代码Sql 在Bigquery的LIMIT子句中从视图传递变量,sql,google-bigquery,Sql,Google Bigquery,我需要创建一个变量来存储要筛选的用户数。基本上,我需要检查一个用户在一定数量的月份内生成了多少事件,然后只使用前几个用户。 我注意到Bigquery没有设置变量的功能,因此我创建了一个包含我的变量的视图 我有以下Bigquery SQL代码 WITH vars AS ( SELECT 3 as num_months, 200000 as num_users ) SELECT id, count(d.value) as count_value FROM events_dat
WITH vars AS (
SELECT 3 as num_months,
200000 as num_users
)
SELECT id, count(d.value) as count_value
FROM events_data evt, unnest(evt.data) AS d, vars
WHERE DATE(eventdate) > date_sub(current_date(), INTERVAL num_months MONTH) AND d.key='eventid'
GROUP BY id
ORDER BY count_value
LIMIT num_users
num_months的使用在过滤num months时非常有效,但是当我试图在limit子句中限制用户数量时,它会出现以下错误
Syntax error: Unexpected identifier "num_users"
我甚至尝试过引用视图以及vars.num\u用户使用行编号:
我通常会调用这样的CTEs参数,所以我将其重命名。所以,使用LIMIT无法实现,是吗?@VarunKumar。如果你有问题,你应该以问题的形式提出,包括样本数据、期望的结果,以及对你想要完成的事情的清晰解释。
WITH params AS (
SELECT 3 as num_months, 200000 as num_users
)
SELECT *
FROM (SELECT id, COUNT(*) as count_value,
ROW_NUMBER() OVER (ORDER BY COUNT(*) ASC) as seqnum
FROM events_data evt, unnest(evt.data) d JOIN
params
ON DATE(eventdate) > date_sub(current_date(), INTERVAL num_months MONTH) AND
WHERE d.key = 'eventid'
GROUP BY id
) id CROSS JOIN
params
WHERE seqnum <= params.num_users
ORDER BY count_value;