Я пытаюсь вычислить разницу между двумя неделями, но при отображении результатов получаю странный пик (SQL / BigQuery) - PullRequest
0 голосов
/ 04 марта 2019

поэтому у меня есть эта ежедневная таблица, которая содержит количество посетителей в магазине, каждый день.

Столбцы моих таблиц:

  • Дата
  • Магазин
  • Number_of_Visitors
  • Просмотры: количество просмотров объявлений магазинов.

Поэтому я сначала начал с агрегирования своей таблицы в недельную таблицу, чтобы можно было рассчитать дисперсиюмежду неделей и следующей.

Вот как я определил дисперсию:

Variance  = `Number Of Visitors in WEEK N+1 / Number of Visitors in WEEK N

Я написал следующий запрос, чтобы сделать это (новая таблица называется: еженедельно)

SELECT
  year_week,
  min(date) as date,
  Store,
  SUM(Number_Of_Visitors) AS TOTAL_VISITORS
FROM (
  SELECT
    *,
    CONCAT(cast((extract(YEAR from date)), LPAD(cast((extract(WEEK from date)) as string), 2, '0') ) AS year_week
  FROM `my-project`)
GROUP BY
  year_week,  Store


  ORDER BY year_week

Затем по порядкудля вычисления дисперсии я также использовал следующий запрос:

SELECT
  base.*,
  ((base.TOTAL_VISITORS-lw.TOTAL_VISITORS)/lw.TOTAL_VISITORS) AS VAR_FF,

FROM
  `weekly` base
JOIN (
  SELECT
    * EXCEPT (date),
    DATE_ADD(DATE(TIMESTAMP(date)), INTERVAL 1 Week)AS n_date
  FROM
    `weekly` ) lw
ON
  base.date = lw.n_date
  AND base.Store= lw.Store

Когда я строю график дисперсии (VAR_FF) с использованием Data Studio, и я получаю следующий график, который, кажется, несмысл с высоким пиком в середине;

VAR_FF per WEEK

1 Ответ

0 голосов
/ 04 марта 2019

Я думаю, ваш код должен выглядеть следующим образом:

SELECT date_trunc(date, week) as year_week,
       Store,
       SUM(Number_Of_Visitors) AS TOTAL_VISITORS,
       (1 - 
        (LAG(SUM(Number_Of_Visitors)) OVER (PARTITION BY Store ORDER BY MIN(date) /
         SUM(Number_Of_Visitors)
        )
       ) as VAR_FF,
FROM`my-project`
GROUP BY year_week, Store
ORDER BY year_week;

Я не уверен, что на самом деле делают ваши странные вычисления для вычисления недели.Это основано на данных предыдущей недели.

...