为了账号安全,请及时绑定邮箱和手机立即绑定

python sdk query_job.result() 无法轮询作业状态

python sdk query_job.result() 无法轮询作业状态

HUH函数 2021-06-12 15:24:09
google-cloud-bigquery 版本是 1.5.0,堆栈在 sdk 代码中崩溃。有什么解决方法吗?[2018-09-12 21:18:01,265] {base_task_runner.py:98} INFO - Subtask:     query_job.result()  # Waits for the query to finish ... [2018-09-12 21:18:01,315] {base_task_runner.py:98} INFO - Subtask:     raise exceptions.from_http_response(response) [2018-09-12 21:18:01,316] {base_task_runner.py:98} INFO - Subtask: google.api_core.exceptions.BadRequest: 400 GET https://www.googleapis.com/bigquery/v2/projects/fsql-production/queries/[my job id]?maxResults=0: Cannot return an invalid timestamp value of 1534808046936000000 microseconds relative to the Unix epoch. The range of valid timestamp values is [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999]; error in writing field request_started_at
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

这表示您的查询中存在错误,而不是客户端代码中的错误。错误是:


无法返回相对于 Unix 纪元 1534808046936000000 微秒的无效时间戳值。有效时间戳值范围为 [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999];写入字段 request_started_at 时出错


听起来您有一个命名的字段/列的request_started_at比例不正确;1534808046936000000应该是1534808046936000。在迁移到标准 SQL的指南中有一些与此相关的材料。如果此列的所有值都未正确缩放,那么您可以执行以下操作来修复它们:


CREATE OR REPLACE dataset.table AS

SELECT *

  REPLACE (TIMESTAMP_MICROS(DIV(UNIX_MICROS(request_started_at), 1000)) AS request_started_at)

FROM dataset.table

这将在将列中的值缩小 1000 倍后替换它们。


查看完整回答
反对 回复 2021-06-16
  • 1 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号