Ошибка вставки строки RFC3339 в большой запрос - PullRequest
0 голосов
/ 30 марта 2020

У меня следующая datetime строка 2020-03-30T16:26:37-04:00, и когда я пытаюсь вставить это в большой запрос (я отправляю строковый объект как часть json объекта), я получаю ошибку

Invalid datetime string "2020-03-30T16:26:37-04:00"> «invalid'`.

Согласно этому сообщению, я думаю, что формат в порядке, но я все еще получаю ошибку

Какой формат принимает метка времени BigQuery?

  • Это вставлено из конвейера gcp-dataflow в bigquery
  • Я использую apache-beam[gcp]==2.19.0 версию

Резюме, как я вставляю в BigQuery

  • Я получаю сообщения в виде потока байтов от pubsub
  • У меня есть декодер, который декодирует поток данных в список словаря, т. Е. [{"field_one":value, "field_two":value_2}]

  • Этот словарь затем отправляется на bigquery

1 Ответ

1 голос
/ 08 апреля 2020

Как видите, здесь , тип DATETIME не поддерживает часовой пояс.
Правильный синтаксис: YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]], где:

ГГГГ: четыре-ди git год
[М] М: один или два ди git месяц
[ D] D: один или два di git день
(| T): пробел или разделитель 'T'
[H] H: один или два di git час (действительные значения от 00 до 23)
[M] M: одна или две ди git минуты (действительные значения от 00 до 59)
[S] S: одна или две цифровые секунды (действительные значения от 00 до 59)
[.DDDDDD]: до шести дробных цифр (с точностью до микросекунды)

Если вам нужен часовой пояс, рассмотрите возможность использования TIMESTAMP .
Для TIMESTAMP синтаксис: YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]][time zone], где:

ГГГГ: четыре дня git год
[М] М: один или два числа git месяц
[D] D: один или два ди git день
(| T): пробел или T разделитель
[Ч] В: один или два ди git час (допустимые значения от 00 до 23)
[M] M: одна или две ди git минуты (действительные значения от 00 до 59)
[S] S: одна или две цифры секунды (действительные значения от 00 до 59)
[.DDDDDD]: до шести дробных цифр (с точностью до микросекунды)
[часовой пояс]: строка, представляющая часовой пояс. Если часовой пояс явно не указан, используется часовой пояс по умолчанию, UT C. Подробности см. В разделе о часовых поясах.

Обратите внимание, что при вставке нового значения в поле отметки времени оно будет преобразовано в UT C.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...