我遇到了一个问题,我无法搞清楚,也无法为谷歌的任何地方找到解决方案。
我在BigQuery中有一个表,其中有150k+唯一的行和29列。
每一行都有一个REQUIRED列dateX类型DATE。
在我的App中,我从电子表格(最重要的是日期范围)获取用户输入,在指定的文件夹中创建一个新的电子表格,插入数据和设置格式,并将下载链接返回给用户。
我需要的“最后”特性是能够获取用户提供的日期范围值,并将它们插入到我的BigQuery查询字符串中,以便我可以只为这些日期从BigQuery表中写入数据。
问题是:
无论我如何在construct中构造查询字符串,查询都不返回任何行。只是标题。
到目前为止,我已经确定查询中的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+行运行查询。
如果选择我的列,它将返回所需的列。但不会返回所有(*)。
我超越了困惑&真正迷失了。也许我花了很多时间在这个问题上,我开发了一个隧道式的愿景&需要第二组眼睛来发现这个问题。任何帮助都是非常感谢的。提前谢谢你。
发布于 2020-11-13 10:37:30
我不确定在没有样本数据的情况下还能说什么。如果可能的话-也许你可以分享一些你的数据集的匿名版本?
我猜会是一个简单的错误:
var request = {
query: `SELECT * FROM le.table.name WHERE dateX = '2020-10-5'`
};不是应该是“2020-10-5”吗?
发布于 2020-11-13 22:09:03
我在这个问题上睡了一觉,找到了解决我的问题的办法:
当在BigQuery中直接运行查询时,知道'2020-10-05‘实际上是一个日期是非常明智的,因此它以DATE格式读取它。
在App中构造查询字符串时,整个这是一个字符串,因此'2020-10-05‘也是一个字符串。这显然会导致WHERE返回false,因为它正在将dateX ( DATE )与字符串进行比较。
通过对日期变量使用cast()来解决这个问题:
var request = {
query: `SELECT * FROM le.table.name WHERE dateX between ` +
`cast(${dateFrom} as date) and cast(${dateTo} as date);`
}
//
//Note: dateFrom & dateTo variables need to include ' ' in them.
// Ex: var dateFrom = "'2020-10-05'";
//我希望这能帮助其他人处理应用程序脚本& BigQuery!
https://stackoverflow.com/questions/64818037
复制相似问题