Как вы добавляете часовой пояс в метку времени кадра, которую вы загружаете в Bigquery (BQ)?
При загрузке кадра данных, который включает временные метки, в Google BQ, вам нужно указать смещение UTC или имя часового пояса, чтобы убедиться, что вы сохраняете правильный часовой пояс. Если вы этого не сделаете, BQ автоматически преобразует вашу метку времени в UTC.
Формат метки времени, который может прочитать BQ, имеет следующий канонический формат: YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]][time zone]
Мой вопрос касается правильной настройки партии [time zone]
. Согласно документации BQ:
Временная метка в формате строки может включать часовой пояс. Если часовой пояс явно не указан, используется часовой пояс по умолчанию, UTC. Часовые пояса представлены строками в одном из этих двух канонических форматов:
- Смещение от всемирного координированного времени (UTC) или буква Z для UTC
- Имя часового пояса из базы данных tz
У меня есть фрейм данных, который включает временные метки, которые были преобразованы в местный часовой пояс с помощью следующей команды:
df['date'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin')
Результаты выглядят следующим образом и включают смещение UTC:
2019-02-15 00:02:26+01:00
и
2019-04-01 00:03:40+02:00
(переход на летнее время)
Однако при загрузке этого в BQ через API значения преобразуются в UTC. И я получаю следующие значения.
2019-02-15 00:01:26 UTC
и
2019-04-01 00:01:40 UTC
Что может быть в случае, если BigQuery не принимает форматирование моей временной метки?
Я загружаю работу следующими строками кода:
dataset_ref = client.dataset('dataset_name')
table_ref = dataset_ref.table('table_name')
job_config = bigquery.LoadJobConfig()
job_config.autodetect = True
job_config.write_disposition = 'WRITE_TRUNCATE'
client.load_table_from_dataframe(df, table_ref, job_config=job_config).result()