BigQuery автоматически конвертирует временную зону метки времени в UTC - PullRequest
0 голосов
/ 02 июня 2018

У меня есть такая таблица:

enter image description here

и файл как таковой: https://storage.googleapis.com/test_share_file/testTimestamp.csv

, который выглядит следующим образом:enter image description here

и я загружаю файл в большой запрос, используя python как так:

from google.cloud import bigquery as bq

gs_path = 'gs://test_share_file/testTimestamp.csv'
bq_client = bq.Client.from_service_account_json(gcp_creds_fp)
ds = bq_client.dataset('test1')
tbl = ds.table('testTimestamp')

job_config = bq.LoadJobConfig()
job_config.write_disposition = bq.job.WriteDisposition.WRITE_APPEND
job_config.skip_leading_rows = 1 # skip header
load_job = bq_client.load_table_from_uri(gs_path, tbl, job_config=job_config)
res = load_job.result()

и все же в таблице обе временные метки указаны по времени UTC!

enter image description here

Как получить второй столбец в восточном времени?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете "преобразовать" первый столбец в восточное время на лету - что-то вроде приведенного ниже примера

#standardSQL
WITH t AS (
  SELECT TIMESTAMP '2018-05-07 22:40:00+00:00' AS ts
)
SELECT ts, STRING(ts, '-04:00') timestamp_eastern
FROM t

Я имею дело с ... упрямством ...

Вы можете создать представление, которое будет состоять из всей необходимой логики, поэтому клиент будет запрашивать это представление вместо исходной таблицы.

#standardSQL
CREATE VIEW `project.dataset.your_view` AS 
SELECT ts, STRING(ts, '-04:00') timestamp_eastern 
FROM `project.dataset.your_table`

Мне кажется странным, что большой запрос можетне отображать время в часовом поясе

Отметка времени представляет собой абсолютную точку времени, независимую от часового пояса или соглашения, например, перехода на летнее время.
Часовые пояса используются, когдаразбор временных отметок или форматирование временных отметок для отображения.Само значение временной метки не хранит определенный часовой пояс.Временная метка в формате строки может включать часовой пояс.Если часовой пояс явно не указан, используется часовой пояс по умолчанию, UTC.

Подробнее о Timestamp type

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