Мой вариант использования заключается в том, чтобы использовать приведенное ниже представление preto в верхней части таблицы, чтобы получить дневной счет путем вычитания текущего значения из значения вчерашнего дня. Если в таблице нет данных, то представление должно динамически учитывать значение следующего дня, а затем взять среднее значение для представления отсутствующего дня.
Это предварительный запрос. Я взял только одно поле в приведенном ниже запросе
CREATE OR REPLACE VIEW hive.facebook.post_metrics_daily AS
SELECT
a.post_id,
a.page,
a.dt,
a.created_time,
(
COALESCE(
(
CAST(a.likes AS integer)
- IF(
(CAST(b.likes AS integer) IS NULL),
0,
CAST(b.likes AS integer)
)
)
, 0
)
) likes
FROM
hive.facebook.post_metrics a
LEFT JOIN hive.facebook.post_metrics b
ON a.dt = (b.dt + INTERVAL '+1' DAY)
AND a.post_id = b.post_id
AND a.brandname = b.brandname
WHERE a.dt = date'2019-09-10'
Если данные за 9-12-й и 10-е данные отсутствуют, то представление должно принимать данные за 11-й день и принимать средние значения за 9-й и 11-й, чтобы дать10-й вид. Как это можно сделать? Можно ли применить эту формулу в запросе, и если да, то каким образом?
(today-yesterday)/n+1
, где n
будет числом пропущенных дней.
Это пример данных для лайков. В случае отсутствия лайков мне нужны средние лайки, а количество пропущенных дней должно быть динамически определено запросом.
Date Likes-org. missing likes daily likes org. expected likes
2019-10-17 20487 20487 20487 20487
2019-10-18 25384 25384 4897 4897
2019-10-19 26817 26817 1433 1433
2019-10-20 27499 missing likes 682 257
2019-10-21 27854 missing likes 355 258
2019-10-22 27987 missing likes 133 258
2019-10-23 28065 missing likes 78 258
2019-10-24 28106 28106 41 258
2019-10-25 28134 28134 28 28