如何将 spanner TIMESTAMP 转换为 BigQuery TIMESTAMP?
How to convert the spanner TIMESTAMP to BigQuery TIMESTAMP?
我正在尝试将一些表从 Spanner 复制到 BigQuery。
我将 Spanner 数据库转储到 csv 文件中,当我尝试将该 csv 上传到 BigQuery 时,它抛出了时间戳格式错误。
Here 他们提到了 BigQuery TIMESTAMP 的限制。
如何将 Spanner TIMESTAMP 转换为 BigQuery TIMESTAMP?
可能有两种方法可以解决这个问题。
- 将时间戳字段保留为 Cloud Spanner 导出的字符串,并将其作为字符串加载到 BigQuery 中。它应该仍然是可排序的并在谓词中使用。
- 使用用户定义的函数通过 TextToBigQuery Dataflow template.
执行在 BigQuery 中本地加载时间戳所需的字符串转换
您也可以编写脚本将时间戳转换为 BigQuery 格式。
除了@Biswa-nag 写的-
我们将 Spanner 表导出到 avro 文件,然后导入到 BigQuery。
不幸的是,时间戳原来是 BigQuery 中的字符串。
我们针对临时查询的解决方法是使用用户定义的函数来转换查询中的时间戳(找到正确的格式需要一些时间...)
一个例子:
CREATE TEMP FUNCTION ConvertTimestamp(dt STRING) AS (PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*SZ", dt));
select count(*) from `[db].Games` where ConvertTimestamp(StartTime) >= DateTime(2019,8,1,0,0,0)
我像这样将时间戳转换为纪元时间
SELECT myTime , FORMAT_TIMESTAMP("%s", myTime, "America/Los_Angeles") FROM MyTable
成功了。
我正在尝试将一些表从 Spanner 复制到 BigQuery。
我将 Spanner 数据库转储到 csv 文件中,当我尝试将该 csv 上传到 BigQuery 时,它抛出了时间戳格式错误。
Here 他们提到了 BigQuery TIMESTAMP 的限制。
如何将 Spanner TIMESTAMP 转换为 BigQuery TIMESTAMP?
可能有两种方法可以解决这个问题。
- 将时间戳字段保留为 Cloud Spanner 导出的字符串,并将其作为字符串加载到 BigQuery 中。它应该仍然是可排序的并在谓词中使用。
- 使用用户定义的函数通过 TextToBigQuery Dataflow template. 执行在 BigQuery 中本地加载时间戳所需的字符串转换
您也可以编写脚本将时间戳转换为 BigQuery 格式。
除了@Biswa-nag 写的-
我们将 Spanner 表导出到 avro 文件,然后导入到 BigQuery。 不幸的是,时间戳原来是 BigQuery 中的字符串。
我们针对临时查询的解决方法是使用用户定义的函数来转换查询中的时间戳(找到正确的格式需要一些时间...)
一个例子:
CREATE TEMP FUNCTION ConvertTimestamp(dt STRING) AS (PARSE_DATETIME("%Y-%m-%dT%H:%M:%E*SZ", dt));
select count(*) from `[db].Games` where ConvertTimestamp(StartTime) >= DateTime(2019,8,1,0,0,0)
我像这样将时间戳转换为纪元时间
SELECT myTime , FORMAT_TIMESTAMP("%s", myTime, "America/Los_Angeles") FROM MyTable
成功了。