Анализ повторных предыдущих событий (1 и 3 раза подряд)

Автор HuDiK, 12 декабря 2019, 02:42:02

« назад - далее »

HuDiK

Есть операция со ставками на слова, но она проводится примерно раз в 10 дней но не с одинаковым периодом.Это может быть дней или 7 дней или 10 дней.

Нужно определить:
скольким словам повышаем ставки из тех которым повышались прошлый раз
скольким словам повышаем ставки из тех которым повышались за три раза подряд

Вот часть скрипта

LOAD   
     Дата,
     КлючевоеСлово,
     Update
.......

Дата - это каждый день в году
Ключевое Слово - слово для которого повышаем ставку
Update - ключ, если он содержит 'top-keywords' значит в этот день мы меняли ставку

Получается мы должны присоединить таблицу с переменными я так понял.
Вот нашел видео но оно подходит к неделям.
https://www.youtube.com/watch?v=E3S7AIHqYVA
     

Uunit

Можно по подробнее?
Есть что то ещё помимо описанного скрипта?)
Есть ли некая таблица куда вносится информация по повышению слов?

HuDiK

Вот сам скрипт после загрузки таблицы.

LOAD
    id, // уникальный идентификатор записи в таблице
    Дата, 
    Max_Bid, // Ставка для ключевого слова
    Keyword_or_ProductS, // Ключевое слово
    Record_Type, // Уникальный идентификатор на сайте для записи
    Update, //
    IF (Update='top-keywords',Дата) as DateUpdate  // тут запоминаем дату обновления ставок
Resident
  Обновления_отчетПодготовка

Вот график что в итоге по обновлениям всего

Uunit

Не зная всей специфики сложно что то предложить, но всё же.
Ещё вопрос, а каждое повышение, это новая строка или повышение происходит путём изменения данных в уже существующей ячейке?

Если это новая строка, то нам достаточно посчитать, количество строк для каждого слова.
Если повышения происходят в уже существующей строке, будет сложнее, так как нужно будет брать файл, обрабатывать его, сохранять его в qvd, а потом новый файл сравнивать с сохранённым. И увеличивать количество изменений для каждой строки.

HuDiK

#4
Вот кусок таблицы из базы данных

https://drive.google.com/file/d/1g6dpZwHM57HDAjNfTYNXcbotatIUX42J/view?usp=sharing

HuDiK

#5
Строка формируется раз в день, соответственно у нас есть Дата поле. Если в поле Update  пусто в этой строке значит в этот день изменений не было.

Если это новая строка, то нам достаточно посчитать, количество строк для каждого слова. Это я посчитать могу. Я это считаю на конкретную дату конкретное количество. График пример. Мне надо сравнить с прошлым разом сколько слов повышалось  в последний раз и в прошлый одновременно.  И сколько раз в последний раз и два раза подряд прошлых - то есть три раза подряд.

Uunit

Получается нам нужно знать одновременно, историю данного слова на три шага назад.
Возможно есть вариант проще, но в голову пришло следующее.

Всякий раз у нас есть новая таблица, Всякий раз переименовывать таблицу не вариант.
В таблице есть Слово, его можем использовать как Уникальны код. На кройняк использовать ключ Дата%Слово
   Думаю вам виднее какой ключ лучше использовать.
Как вы уже сказали, что вы уже считаете количество строк для каждой строки.
Тогда что нам мешает после каждой загрузки сохранять эти данные в qvd?

Т.е.
Выглядеть это будет следующим образом:
1) загружаете "актуальную таблицу".
2) Загружаете "ретро данные 1", делаете left join с первой
3) Загружаете "ретро данные 2",делаете left join с первой
4) загружаете "ретро данные 1", сохраняете их в формате qvd как "ретро данные 2"
5) загружаете "актуальную таблицу", сохраняете их в формате qvd как "ретро данные 1"

На первый взгляд замудрённо, но по факту всё должно работать.
По крайней мере в моей голове это укладывается.

--------------------------------------------------------
п.с. изначально ретро файла один и ретро файла два не будет.
Поэтому первый раз код должен быть без пунктов 2-4
   а во второй раз код должен быть без пункта 3-4.

Либо просто создать пустой qvd файл с нужными столбцами и назвать его нужными именами.

Яндекс.Метрика