由于无法在BigQuery中更新表中的数据,并且仅支持追加机制,因此我决定每月创建新表.因此,假设2012年全年的表是(tbl_012012,tbl_022012,tbl_032012,... tbl_122012).每条记录将与日期一起存储timestamp为字符串.
现在,如果我的应用程序想要获取从2012年1月(tbl_012012)到2012年3月(tbl_032012)的记录,BigQuery API是否会通过单个SQL范围查询自动遍历所需的表,或者我是否必须使用额外的应用程序代码编写多个SQL查询来检索每个查询结果然后将它们聚合在一起?
Edu*_*rdo 35
您还可以使用表通配符函数.以下是StandardSQL 文档中的一个示例:
SELECT
name
FROM
mydata.people
WHERE
age >= 35
AND
(_TABLE_SUFFIX BETWEEN '20140325' AND '20140327')
Run Code Online (Sandbox Code Playgroud)
这是LegacySQL(docs)的类似示例.
SELECT
name
FROM
(TABLE_DATE_RANGE([mydata.people],
TIMESTAMP('2014-03-25'),
TIMESTAMP('2014-03-27')))
WHERE
age >= 35
Run Code Online (Sandbox Code Playgroud)
这将查询表:
这些文档还有其他一些选项.我建议你检查一下.
这是一个演示多表选择示例的代码段:
SELECT trafficSource.medium AS Traffic_Source, COUNT(trafficSource.medium) AS Counts_Source
FROM [608XXXXX.ga_sessions_20131008],
[608XXXXX.ga_sessions_20131009],
[608XXXXX.ga_sessions_20131010],
[608XXXXX.ga_sessions_20131011],
[608XXXXX.ga_sessions_20131012],
[608XXXXX.ga_sessions_20131013],
[608XXXXX.ga_sessions_20131014],
[608XXXXX.ga_sessions_20131015],
GROUP BY Traffic_Source
ORDER BY Counts_Source DESC
Run Code Online (Sandbox Code Playgroud)
2017年更新:
使用 BigQuery #standardSQL - 您可以使用 standardUNION ALL来遍历多个表,也可以使用 a*来匹配共享相同前缀的所有表。使用*匹配器时,您还可以访问元列_TABLE_SUFFIX- 了解行来自哪个表。
SELECT * FROM Roster
UNION ALL
SELECT * FROM TeamMascot
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16930 次 |
| 最近记录: |