Int*_*s_K 5 sql google-sheets google-apps-script google-bigquery
我的 Google Bigquery 表有日期和时间列。新数据每 10 分钟发布一次,因此日期字段将包含例如“2018-10-26”和时间字段“19:05:00”。对于日期和时间字段,下一条记录将类似于“2018-10-26”和“19:15:00”。如何按一小时聚合每天的数据(每天 24 条记录)?
SQL 请求是使用 Apps 脚本从 Google 表格发送的。这是 google bigquery.gs 脚本的一部分:(GitHub 中的完整脚本)
...
var sheet = SpreadsheetApp.getActiveSheet();
var sql = 'SELECT date, time, SUM(col1) AS Col1, SUM(col2) AS Col2 GROUP BY
time, date ORDER BY time ASC';
var queryResults;
// Inserts a Query Job
try {
var queryRequest = BigQuery.newQueryRequest();
queryRequest.setQuery(sql).setTimeoutMs(100000);
queryResults = BigQuery.Jobs.query(queryRequest, projectNumber);
}
....
Run Code Online (Sandbox Code Playgroud)
下面是 BigQuery 标准 SQL
#standardSQL
SELECT date, TIME_TRUNC(time, HOUR) hour, SUM(col1) AS Col1, SUM(col2) AS Col2
FROM `project.dataset.table`
GROUP BY date, hour
ORDER BY date, hour
Run Code Online (Sandbox Code Playgroud)
您可以在您的问题中使用虚拟数据进行测试和操作:
#standardSQL
WITH `project.dataset.table` AS (
SELECT DATE "2018-10-26" date, TIME "19:05:00" time, 1 col1, 2 col2 UNION ALL
SELECT "2018-10-26", "19:15:00", 3, 4
)
SELECT date, TIME_TRUNC(time, HOUR) hour, SUM(col1) AS Col1, SUM(col2) AS Col2
FROM `project.dataset.table`
GROUP BY date, hour
ORDER BY date, hour
Run Code Online (Sandbox Code Playgroud)
结果
Row date hour Col1 Col2
1 2018-10-26 19:00:00 4 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10091 次 |
| 最近记录: |