代码之家  ›  专栏  ›  技术社区  ›  Em Ae

将RFC3339字符串插入bigquery时出错

  •  0
  • Em Ae  · 技术社区  · 6 年前

    我有以下几点 datetime 一串 2020-03-30T16:26:37-04:00 当我尝试在bigquery中插入这个时(我将字符串对象作为json对象的一部分发送),我得到了一个错误

    Invalid datetime string "2020-03-30T16:26:37-04:00" >'无效的“`”。

    根据这篇文章,我认为格式是好的,但我仍然得到错误

    What format does BigQuery timestamp take?

    • 这是从gcp数据流管道插入到bigquery的
    • 我在用 apache-beam[gcp]==2.19.0 版本

    总结我如何在BigQuery中插入

    • 我从pubsub以字节流的形式接收消息
    • 我有一个解码器,可以把字节流解码成字典列表。, [{"field_one":value, "field_two":value_2}]

    • 这本词典随后被发送到 bigquery

    0 回复  |  直到 6 年前
        1
  •  2
  •   rmesteves    6 年前

    如你所见 here , DATETIME 类型不支持时区。
    正确的语法是 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]] 哪里:

    YYYY:四位数年份
    [M] M:一到两位数的月份
    [D] D:一个 还是两位数的一天
    (| T):空格或“T”分隔符
    [H] H:一个 或两位数小时(有效值从00到23)
    [M] 男:一两个 数字分钟(有效值从00到59)
    [S] S:一个或两个数字 秒(有效值从00到59)
    [.DDDDDD]:最多六个 小数位数(微秒精度)

    如果需要时区,请考虑使用 TIMESTAMP .
    对于 TIMESTAMP 语法是 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]][time zone] 哪里:

    YYYY:四位数年份
    [M] M:一到两位数的月份
    [D] D:一个 还是两位数的一天
    (| T):一个空间或一个 T 分离器
    [H] H:一个 或两位数小时(有效值从00到23)
    [M] 男:一两个 数字分钟(有效值从00到59)
    [S] S:一个或两个数字 秒(有效值从00到59)
    [.DDDDDD]:最多六个 小数位数(微秒精度)
    [时区]:字符串 代表时区。当一个时区没有明确定义时 指定时,将使用默认时区UTC。看到时区了吗 详情请参阅第节。

    请注意,在向时间戳字段插入新值时,该值将转换为UTC。

    我希望有帮助