Я постараюсь быть максимально простым, чтобы сделать мой вопрос кристально ясным.У меня есть таблица, которая называется 'fb_ads' (о разных кампаниях на Facebook для разных магазинов в США) в BigQuery, она содержит следующие столбцы:
- STORE: название магазина
- Клики: количество кликов.
- ВПЕЧАТЛЕНИЯ: количество показов объявления
- СТОИМОСТЬ: стоимость объявления
- ДАТА: AAAA-MM-DD
- Частота: количество посетителей магазина
Итак, я пытаюсь вычислить дисперсию между двумя годами 2017 и 2018.
Вот дисперсия, которую я пытаюсь вычислить:
Variance_Of_Frequency = ((Frequency in 2018 at date X) - ((Frequency in 2017 at date X))/((Frequency in 2017 at date X)
Проблема в том, что мне придется сравнивать тот же день недели, близкий к дате X;
Например, если в понедельник я запускаю кампанию2017-08-13, мне нужно сравнить с другим понедельником в 2018 году, близким к 2018-08-13 (например, это может быть понедельник 2018-08-15).
Это ежедневныйДисперсия!
Я пытался сделать еженедельное вычисление дисперсии, и я не знаю, правильно ли это, вот как я это сделал:
Сначала я начал агрегировать свою ежедневную таблицу в недельные таблицы, используя следующий запрос:
, создав свою недельную таблицу
SELECT
year_week,
STORE,
min(DATE ) as DATE ,
SUM(IMPRESSIONS ) AS FB_IMPRESSIONS ,
SUM(CLICKS ) AS FB_CLICKS ,
SUM(COST) AS FB_COST ,
SUM(Frequency) AS FREQUENCY,
FROM (
SELECT
*,
CONCAT(cast(ANNEE as string), LPAD(cast((extract(WEEK from date)) as string), 2, '0') ) AS year_week
FROM `fb_ads`)
GROUP BY
year_week,
STORE,
ORDER BY year_week
Затем я попытался вычислить дисперсию, используяэто:
SELECT
base.*, (base.frequency-lw.frequency) / lw.frequency as VAR_FF
FROM
`weekly_table` base
JOIN (
SELECT
* EXCEPT (date),
DATE_ADD(DATE(TIMESTAMP(date)) , INTERVAL 1 Week)AS date
FROM
`weekly_table` ) lw
ON
base.date = lw.date
AND base.store= lw.store
Кто-нибудь знает, как делать повседневные дела или если мои еженедельные запросы верны?
Спасибо!