Получение данных с таймфрейма на основе даты - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь получить данные с 30-дневного периода до и после отправки уведомления. Я пробовал приведенный ниже запрос, но он не дает мне того, что я хочу. Поле create_at - это дата отправки сообщения. Я пытаюсь установить sh корреляцию между датой отправки сообщения и полем epaper_opens. С этой целью я просматриваю 30-дневные интервалы до и после события create_at.

SELECT state,
       epaper_opens,
       CAST(created_at AS date) AS Date,
       COUNT(created_at) AS Sent

FROM analytics.fct_notifications

LEFT JOIN analytics.fcts_customer_activity_agg
  ON fct_notifications.customer_id = fcts_customer_activity_agg.subscription_id

WHERE DATE > DATE_SUB(CAST(created_at AS date), INTERVAL 30 DAY)
  AND DATE < DATE_ADD(CAST(created_at AS date), INTERVAL 30 DAY)

GROUP BY 1, 2, 3
ORDER BY 3 DESC

1 Ответ

1 голос
/ 20 февраля 2020

Соглашаясь с тем, что сказал @Gordon Linoff, было бы полезно узнать структуру ваших таблиц, полученные результаты и желаемые результаты.

Я воссоздал аналогичный сценарий в BQ, используя то же предложение WHERE, которое вы использовали, и оно работает хорошо, за исключением того, что интервалы не являются включающими (так как вы используете операторы <и> вместо <= и> =), так что вы на самом деле получаете результаты за 29 дней до и через 29 дней после даты create_at; будет ли это то, на что вы ссылаетесь, когда говорите, что ваш запрос не дает вам всех результатов, которые вы хотите?

Если это так, вы можете попробовать использовать упомянутые операторы:

WHERE DATE >= DATE_SUB(CAST(created_at AS date), INTERVAL 30 DAY)

  AND DATE <= DATE_ADD(CAST(created_at AS date), INTERVAL 30 DAY)

или вы также можете использовать оператор МЕЖДУ , который имеет включающие ограничения:

WHERE DATE BETWEEN DATE_SUB(CAST(created_at AS date), INTERVAL 30 DAY)

  AND DATE_ADD(CAST(created_at AS date), INTERVAL 30 DAY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...