объединить и сгруппировать таблицу a строк по таблице b даты

Нет, вам не нужно ничего подклассифицировать. Вам просто нужно вызвать ioloop.IOLoop.current(), чтобы получить текущий исполняемый экземпляр ioloop, а затем вызвать call_at для запуска вашей функции.

Однако, вместо call_at, проще использовать call_later.

Пример с помощью call_later:

ioloop.IOLoop.current().call_later(delay=10, callback=your_function)

# Tornado will run `your_function` after 10 seconds.

Если вы все еще хотите использовать call_at, вот пример:

current_time = ioloop.IOLoop.current().time()
call_time = current_time + 10
ioloop.IOLoop.current().call_at(when=call_time, callback=your_function)

# Tornado will run `your_function` after 10 seconds

UPDATE:

Чтобы запустить функцию в определенное время, вы можете сделать это:

from datetime import datetime

# take note of the current time
now = datetime.now()

# create a datetime object of when you want to call your function
call_time = datetime(year=2018, month=7, day=18, hour=14, minute=30) 

# find the time difference in seconds between `call_time` and `now`
call_time_seconds = (call_time - now).seconds

ioloop.IOLoop.current().call_later(delay=call_time_seconds, callback=your_function)
# Tornado will run your function at 14:30 on 18 July.
0
задан sticky bit 20 January 2019 в 06:39
поделиться

1 ответ

Вместо присоединения к profile_activities непосредственно присоединитесь к подзапросу, который выбирает все столбцы из profile_activities, а также к lag() ed created_at. Затем вы можете сравнить с created_at из «предыдущего» действия. В качестве значения по умолчанию для lag(), которое берется при отсутствии предыдущей активности, используйте '-infinity'. Поскольку все метки времени больше отрицательной бесконечности, сравнение с карточкой слова created_at будет работать и в этих случаях.

SELECT w.wordcard_id,
       w.profile_id,
       w.created_at,
       a.activity_id,
       a.profile_id,
       a.created_at
       FROM (SELECT a.activity_id,
                    a.profile_id,
                    a.created_at,
                    lag(a.created_at,
                        1,
                        '-infinity') OVER (ORDER BY a.created_at) created_at_lag
                    FROM profile_activities a) a
            INNER JOIN profile_wordcards w
                       ON w.profile_id = a.profile_id
                          AND w.created_at > a.created_at_lag
                          AND w.created_at <= a.created_at
       ORDER BY a.activity_id;

db <> fiddle

0
ответ дан sticky bit 20 January 2019 в 06:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: