Google Big Query Storage API непоследовательно возвращает FastAvro или Pytz для информации о часовом поясе - PullRequest
0 голосов
/ 21 мая 2019

Я читаю данные, используя API Big Query Storage в Python (google-cloud-bigquery-storage == 0.4.0, а также сегодня проверено на 0.5.0).

Для кода:

result = bq_client.query(sql, project=project).result()
return result.to_dataframe(bqstorage_client=bqs_client)

Из некоторых запросов, SELECT -в столбце TIMESTAMP, я получаю следующий тип данных Pandas DataFrame:

datetime64[ns, <fastavro._timezone.UTCTzinfo object at 0x...>]

, где информация о часовом поясе хранится в виде fastavro

для других таблиц, я получаю

datetime64[ns, UTC]

с информацией о часовом поясе, хранящейся в pytz объект.

Насколько я могу судить (исходные таблицы находятся вне моего контроля, и я не смог выполнить репликацию с общедоступным набором данных), это кажется произвольным - например, добавление предложения limit приводит квывод pytz - хотя всегда в соответствии с одним и тем же запросом.

Есть ли способ всегда вернуть формат pytz?(Avro TZ не сериализуем, поэтому нуждается в идентификации и преобразовании).

Это что-то, что вернется после истечения сеанса?(24 часа? Или можно ли принудительно завершить сеанс?)

(Не уверен, где лучшее место для запроса поддержки, и цените API Big Query Storage в бета-версии, поэтому попробуйте здесь.)

Редактировать: в настоящее время я работаю над этим, делая

for col in train_df.select_dtypes('datetimetz'): 
    train_df[col] = train_df[col].dt.tz_convert(pytz.UTC)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...