我刚刚开始使用Google BigQuery,并且在第一次查询时遇到了问题。我试图获取Stack Overflow帖子的列表,包括2015-01-01,其中包含多个标签之一。以下是我在查询中的第一次传递:
#standardSQL
SELECT
title,
body,
answer_count,
creation_date,
tags,
view_count
FROM
`bigquery-public-data.stackoverflow.posts_questions` limit 10
WHERE
creation_date >= "2015-01-01" AND tags HAVING "terraform" OR "chef" OR "puppet" OR "ansible"
BigQuery验证程序显示以下错误消息:
错误:语法错误:[14:1]处的意外关键字WHERE
答案 0 :(得分:2)
您有一些语法错误,即错误位置的 public void DoStuff()
{
var intervalMs = 5000;
var timer = new Timer(intervalMs);
timer.Elapsed += new ElapsedEventHandler(DoStuffOnTimer);
timer.Enabled = true;
}
private void DoStuffOnTimer(object source, ElapsedEventArgs e)
{
//do stuff
}
,并且错误地使用limit 10
关键字。我还使用原生HAVING
而不是比较字符串:
timestamp
答案 1 :(得分:0)
这里有一些问题,但希望这会有所帮助:
据说这个查询可能就是你想要的:
#standardSQL
SELECT
title,
body,
answer_count,
creation_date,
tags,
view_count
FROM `bigquery-public-data.stackoverflow.posts_questions`
WHERE creation_date >= "2015-01-01" AND
EXISTS (
SELECT 1 FROM UNNEST(SPLIT(tags, "|")) AS tag
WHERE tag IN ("terraform", "chef", "puppet", "ansible")
)
LIMIT 10;
请注意,我需要将SPLIT
与tags
列一起使用,因为标记由竖线字符分隔。由于您可以免费获得1 TB的查询,因此请尽量通过获取所有结果而不是使用LIMIT来充分利用它。