我在很长一段时间内第一次使用BigQuery,所以我有点生疏了。
我正在使用可以是found here for Reddit data.
的公共数据集这是一张快照:
我要做的是创建一个从2017年提取所有数据的查询。
基本上,我想使用特定于此的BQ语法,它是使用标准SQL编写的:
fh-bigquery.reddit_posts.2017*
我知道这将涉及使用TABLE_DATA_RANGE函数,但我对它的具体措辞感到困惑。
如果我只使用其中一个表,它将如下所示:
SELECT
FORMAT_UTC_USEC(SEC_TO_TIMESTAMP(created_utc)) AS created_date
FROM
[fh-bigquery:reddit_posts.2017_06]
LIMIT
10
但我显然试图跨越这个数月。
答案 0 :(得分:0)
以下是BigQuery Standard SQL
#standardSQL
SELECT
TIMESTAMP_SECONDS(created_utc) AS created_date
FROM `fh-bigquery.reddit_posts.2017_*`
LIMIT 10
它执行您对一个表的查询所做的事情 - 但对于2017年的所有表(不确定您在查询中实际查找的逻辑是什么 - 但我希望您只是为了简单而将其留在问题之外)
注意:您可以在查询中使用_TABLE_SUFFIX
来确定特定于行的特定行 - 例如:
#standardSQL
SELECT
_TABLE_SUFFIX AS month,
COUNT(1) AS records
FROM `fh-bigquery.reddit_posts.2017_*`
GROUP BY month
ORDER BY month
输出如下
month records
----- ---------
01 9,218,513
02 8,588,120
03 9,616,340
04 9,211,051
05 9,498,553
06 9,597,725
07 9,989,122
08 10,424,133
09 9,787,604
10 10,281,718
如果由于某种原因您仍然绑定到BigQuery Legacy SQL - 您可以使用下面的
#legacySQL
SELECT
FORMAT_UTC_USEC(SEC_TO_TIMESTAMP(created_utc)) AS created_date
FROM TABLE_QUERY([fh-bigquery:reddit_posts], "LEFT(table_id, 5) = '2017_'")
LIMIT 10