更新Google BigQuery表中的无效时间戳记

dnaeye

我的表格中有一些无效的时间戳,我认为对于BigQuery来说这些时间戳太精确了(可能超过微秒)。

当我尝试使用标准SQL使用以下查询更新表时:

UPDATE mytable
SET event_time = TIMESTAMP(DATETIME(TIMESTAMP_MILLIS(CAST(SUBSTR(SAFE_CAST(UNIX_MILLIS(event_time) AS string),1,13) AS int64))))
WHERE DATE(logtime) BETWEEN "2018-03-21" AND "2018-03-23"
    AND event_time IS NOT NULL

我收到无效的时间戳错误:

Cannot return an invalid timestamp value of 1521738691071000064 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 event_time

我认为这是问题所在SET event_time =,但我不知道如何event_time不参考它来设置列中的值

有人对如何解决这个问题有任何想法吗?

dnaeye

必要性是发明之母。对于遇到类似问题的任何人,我都想出了一种解决方法。

  1. 创建一个受影响的行的新表(在WHERE子句中包括此表LENGTH(CAST(UNIX_MILLIS(event_time) as string)) > 13,同时使用以下命令将无效时间戳转换为有效格式)TIMESTAMP(DATETIME(TIMESTAMP_MILLIS(CAST(SUBSTR(SAFE_CAST(UNIX_MILLIS(event_time) AS string),1,13) AS int64))))
  2. 使用上述WHERE子句从原始表中删除受影响的行
  3. 将新表中的所有行重新插入到原始表中。

还有很多工作要做,但是应该可以解决。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Bigquery:如何更新分区表的分区到期时间?

UNIX时间戳记转换为Google bigQuery TS格式

具有更新和创建时间戳记的Google Firestore

Postgres:更新日期并保留时间戳记中的时间

通过Google BigQuery中的select语句创建或更新表

Ubuntu版本的时间戳记更新

Google Appscript更新特定表

Google BigQuery表补丁/更新不起作用

更新列中的时间戳记值,以使最新的时间戳记为当前时间,同时保持行之间的相对时间差

如何为通过Google Apps脚本创建的BigQuery中的新表设置过期时间?

Google BigQuery-github时间轴表中的奇怪查询错误

如何使用 ruby 在 Google big Query 中设置/更新表的到期时间

Google bigquery中的时间戳格式丢失

在Google Cloud中流式插入/更新-BigQuery

通过 Google BigQuery API 更新表的 expireTime 是否也会更新 GBQ UI?

更新BigQuery表中的嵌套字段

将时间戳记在表中

在Google App Maker中,如何更新标签以显示当前时间?

如何更新Google Map Engine表?

Google 表单更新表时更改公式

Google BigQuery:错误:无效的架构更新。字段已从“必需”更改为“空”

在Google Bigquery中创建表SQL语法

是否有Google API来更新Google工作表

BigRQuery如何更新Google Big查询表中的列?

仅更新MySql表中的时间戳

google-bigquery使用另一个表更新表

更新Google Glass中的卡片文字

如何从 Google Sheet 中的元素更新表单?

无法在iOS Project中更新Google AdMob