Использование BigQuery SQL со встроенными функциями Python - PullRequest
0 голосов
/ 25 ноября 2018

Я недавно начал использовать сервис Google BigQuery и его Python API для запросов к большим базам данных.Я новичок в SQL, и документация BigQuery не очень полезна для того, что я делаю.

В настоящее время я просматриваю базу данных reddit_comments, и есть тег 'creation_utc', по которому я пытаюсь отфильтровать.Это поле create_utc соответствует временным меткам Unix (т. Е. 1 ноября, 12:00 - 1541030400)

Я бы хотел получать комментарии изо дня в день (или между двумя временными метками Unix), но таким образом, чтобы яПеребираю каждый день.Примерно так:

from datetime import datetime, timedelta


start = datetime.fromtimestamp(1538352000)
end = datetime.fromtimestamp(1541030400)

time = start

while time < end:
    print(time)
    time = time + timedelta(days = 1)

Время печати здесь дает один вид: 2018-09-30 20:00:00 Однако для запроса мне нужно преобразовать обратно в метку времени Unix, вызвав функцию datetime timestamp (), например time.timestamp()

Проблема в том, что я пытаюсь использовать функцию timestamp () внутри запроса следующим образом:

SELECT *
FROM 'fh-bigquery.reddit_comments.2018_10'
...
AND (created_utc >= curr_day.timestamp() AND created_utc <= next_day.timestamp())

, однако выдает BadRequest: 400 Функция не найдена.Есть ли способ использовать встроенные функции Python так, как я описал выше?Или нужна какая-то альтернатива?

Пока что все кажется довольно интуитивным, но странно, что я не могу найти много полезной информации по этому вопросу.

1 Ответ

0 голосов
/ 25 ноября 2018

Вы должны использовать BigQuery's Built-in functions

Например:

Чтобы получить текущую метку времени - CURRENT_TIMESTAMP()
Чтобы получить метку времени начала текущей даты- TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY)
Чтобы получить метку времени начала следующей даты - TIMESTAMP_TRUNC(TIMESTAMP_ADD(CURRENT_TIMESTAMP() , INTERVAL 1 DAY), DAY)

и т. Д.

Кроме того, для преобразования created_utc в TIMESTAMP тип - вы можете использоватьTIMESTAMP_SECONDS(created_utc)

Вы можете увидеть больше о TIMESTAMP Functions

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