当我从我创建的视图中选择时,我会不时收到以下错误,但并非总是如此:
query: Timestamp evaluation: connection error. (error code: invalidQuery)
Job ID vex-custom:bquijob_59705b02_155966ddc5f
Start Time Jun 28, 2016, 11:53:50 AM
End Time Jun 28, 2016, 11:53:50 AM
单独运行查询非常有效。
关于此查询有两个特殊的事项:
Google的某人是否可以查看职位ID?
答案 0 :(得分:1)
我查看了查询的内部详细信息。失败的查询引用的视图会对TIMESTAMP
函数进行一些有问题的调用。这是一个例子:
SELECT * FROM TABLE_DATE_RANGE([...], TIMESTAMP(DATE_ADD(UTC_USEC_TO_DAY(CURRENT_DATE()), -15, "day")), CURRENT_TIMESTAMP())
具体来说,对TIMESTAMP(DATE_ADD(UTC_USEC_TO_DAY(CURRENT_DATE()), -15, "day"))
的调用是错误的,因为:
UTC_USEC_TO_DAY
返回INTEGER,而不是TIMESTAMP。DATE_ADD
期望参数类型为TIMESTAMP。您可以使用UTC_USEC_TO_DAY
将调用包装到USEC_TO_TIMESTAMP
,以将参数转换为类型TIMESTAMP,如下所示:
TIMESTAMP(DATE_ADD(USEC_TO_TIMESTAMP(UTC_USEC_TO_DAY(CURRENT_DATE())), -15, "day"))
我们正在推出一个更紧密地检查许多时间戳功能的预期输入类型的版本,这就是您目前看到不一致行为的原因。这些修补程序可以防止某些函数返回格式错误TIMESTAMP
的问题,并使我们的行为更符合our documentation on timestamp functions。
另外,我们需要确保TABLE_DATE_RANGE
的时间戳评估中出现的错误返回比“连接错误”更有用的错误。