【发布时间】:2021-02-25 06:59:57
【问题描述】:
我遇到了一个问题,我无法在谷歌的任何地方找到或找到解决方案。
我在 BigQuery 中有一个表,其中包含 150k 多个唯一行和 29 列。
每行都有一个REQUIRED 列dateX 类型DATE。
在我的应用程序脚本中,我从电子表格(最重要的是日期范围)中获取用户输入,在指定文件夹中创建新电子表格,插入数据和设置格式,并将下载链接返回给用户。
我需要的“最终”功能是能够获取用户提供的日期范围值并将它们插入到我的 BigQuery 查询字符串中,这样我就可以只为这些日期写入 BigQuery 表中的数据。
问题:
无论我如何在 App Script 中构造查询字符串,查询 不会 返回任何行。只是标题。
到目前为止,我已经确定查询中的WHERE 语句是问题所在。我尝试了以下方法:
var request = {
query: `SELECT * FROM le.table.name WHERE dateX = '2020-10-5'`
};
//
// Some of the variations I've tried (among countless others w/ different formatting):
// 'SELECT * FROM le.table.name WHERE dateX = "2020-10-5"'
// "SELECT * FROM le.table.name WHERE dateX = '2020-10-5'"
// 'SELECT * FROM le.table.name WHERE dateX between "2020-10-5" and "2020-10-5"'
// 'SELECT * FROM le.table.name WHERE cast(dateX as date) between "2020-10-5" and "2020-10-5"'
// `SELECT * FROM le.table.name WHERE dateX = ${dateFrom}`
// `SELECT * FROM le.table.name WHERE dateX between ${dateFrom} and ${dateTo}`
//
// I've also tried setting the query string as a variable & passing with no success.
// var queryString = 'SELECT * FROM le.table.name WHERE dateX = "2020-10-5"';
// var queryString = 'SELECT * FROM le.table.name WHERE dateX = ' + '2020-10-5';
所有这些都运行良好。作业执行没有错误。但它只返回标题,没有行:(
当我直接在 BigQuery 中运行时,相同的查询运行良好并返回所需的行。
此外,如果我从 WHERE 开始删除所有内容,它会运行我的所有 150k+ 行的查询。
如果我选择我的列,它会返回所需的列。但不会返回 ALL (*)。
我非常困惑,真的迷路了。也许我在这方面花了很多时间,我已经形成了一种隧道视野,需要第二双眼睛来发现这个问题。任何帮助是极大的赞赏。提前谢谢你。
【问题讨论】:
标签: javascript mysql google-apps-script google-cloud-platform google-bigquery