BigQuery SQL 通过应用程序脚本按 DATE 过滤

Posted

技术标签:

【中文标题】BigQuery SQL 通过应用程序脚本按 DATE 过滤【英文标题】:BigQuery SQL via Apps Scripts filtering by DATE 【发布时间】:2020-10-08 13:50:01 【问题描述】:

这是我第一次使用 BigQuery。

我在 Google 表格文件中有一个自动化功能,它每天运行并将一些数据插入到我的表格中。

此时我的表中有大约 120k 行。

架构非常简单:

Field name | Type
Date       | DATE
Country    | STRING
Revenue    | FLOAT

我正在尝试获取过去 7 天内所有收入的总和。

当我在 BigQuery 控制台中运行此查询时,我得到了正确的值:

SELECT SUM(Revenue) AS sum FROM my_dataset.my_table WHERE Date > '2020-10-01'

现在,我在 Google Developers 的 this example 之后在我的 Apps 脚本中复制了完全相同的查询,但我没有得到任何查询结果。它只在我的工作表中写入标题值,结果值始终为空。

我测试了很多查询,发现只有带有WHERE Date 子句的查询不起作用。我正在寻找几个小时的答案,我想我已经尝试了一切。

关于如何格式化此查询以获取所需数据的任何提示?

【问题讨论】:

【参考方案1】:

好吧,在摸索了一个星期后,我发现了问题。我不太了解 Google Cloud 平台的工作原理,但我觉得很奇怪。

我没有更改任何代码,只是在项目中激活了 Google Apps Script API。这解决了我的问题。而且仍然不明白为什么可以在没有 API 访问权限的情况下运行一些查询,但我想这就是 GCP 的工作原理。

【讨论】:

【参考方案2】:

我遇到了同样的问题,我在我的请求对象中使用 useLegacySql: false 解决了它。

const request = 
    query: `SELECT * FROM $dataset.$table WHERE DATE>'$startDate' ORDER BY DATE ASC;`,
    useLegacySql: false,
    location: location,
  ;

现在一切正常了:)

【讨论】:

以上是关于BigQuery SQL 通过应用程序脚本按 DATE 过滤的主要内容,如果未能解决你的问题,请参考以下文章

适用于 BigQuery 的 Google Apps 脚本(标准 SQL)- NaN

从 Google 脚本将数据插入 BigQuery:遇到“”

在 bigquery Standard sql 中按问题分组,并且无法获取唯一记录

使用 Apps 脚本定义/创建 BigQuery 保存视图的 SQL 查询

如何使用调用 UDF 的 Python 脚本来使用 BigQuery API

BigQuery - 通过应用脚本上传带有模式自动检测的 csv