Как получить данные из таблицы events_ в большом запросе за последние 24 часа с помощью standardql? - PullRequest
0 голосов
/ 31 августа 2018

Я использую этот запрос и хочу получить данные за последние 24 часа из таблицы events_ ...

 Select           
  CAST(TIMESTAMP_ADD(TIMESTAMP_MICROS(event_timestamp), INTERVAL 330 
   MINUTE) AS date) AS event_date,
 event_name,user.value.string_value as context_device_id, 
 (event.value.string_value) as id,
 (event_param.value.string_value) as contentType
            FROM ``,
       UNNEST(user_properties) AS user, 
       UNNEST(event_params) as event,
       UNNEST(event_params) as event_param
   where user.key="email" and event.key="postID" and 
   event_param.key="article_type" and
  CAST(TIMESTAMP_ADD(TIMESTAMP_MICROS(event_timestamp), INTERVAL 330 
MINUTE)AS date) between DATE_SUB(current_date(), INTERVAL 1 DAY) and 
 DATE_SUB(current_date(),INTERVAL 0 DAY)

Но я хочу, чтобы всякий раз, когда будет выполняться запрос, давались данные только за последние 24 часа означает, что если я запускаю запрос на событие 5 вечера сегодня, то он должен получить данные со вчерашнего дня 5 вечера до сегодняшнего 5 вечера?

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

В качестве альтернативы, GETDATE () в MSSQL позволит вам сделать целочисленное деление:

SELECT GETDATE(), GETDATE() - 1

Результат на данный момент: 2018-08-31 07:38:18.260 2018-08-30 07:38:18.260

Так что в вашем случае BETWEEN GETDATE() - 1 AND GETDATE() тоже подойдет.

0 голосов
/ 31 августа 2018

Необходимо обновить ссылку на таблицу, чтобы использовать подстановочный знак, который может включать несколько дней, а затем добавить фильтр для ограничения таблиц, которым он соответствует. Например, вы хотели бы что-то вроде:

...
FROM `events_*`,
   UNNEST(user_properties) AS user, 
   UNNEST(event_params) as event,
   UNNEST(event_params) as event_param
WHERE _TABLE_SUFFIX >=
  FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)) AND
  user.key="email" and
  ...

Фильтр псевдостолбца _TABLE_SUFFIX ограничивает сканирование таблицами на сегодня и вчера, а затем фильтр временной отметки, как в исходном запросе, дополнительно ограничивается 24-часовым интервалом.

0 голосов
/ 31 августа 2018

В случае сервера sql вы можете использовать это в предложении where

where event_timestamp>=dateadd (hour , -24 , getdate()) and event_timestamp<getdate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...