Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Дополнить одну таблицу данными из другой / 8 сообщений из 8, страница 1 из 1
19.12.2018, 01:25
    #39749913
seometis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
Привет! Есть вопрос по поводу реализации следующей дичи:

Есть таблица А, в которой хранится суммированная статистика по кликам и затратам рекламных кампаний по часам, с полями:
camp_id - идентификатор рекламной кампании
visits - количество посетителей
time_start - таймстамп (начало отсчёта нового часа, к которому относится статистика)
val - идентификатор страницы
pay - 0


Есть таблица Б, в которой хранятся данные по отдельным конверсиям, с полями:
id - идентификатор конверсии
camp_id - идентификатор рекламной кампании
click_time - таймстамп события (конкретная секунда)
val - идентификатор страницы
pay - выплата

Нужно взять конверсии из таблицы Б, и просуммировав pay по часам вставить эти данные в таблицу А, так чтобы каждая конверсия попадала в конкретный час (от time_start до time_start +3599) в конкретную кампанию (camp_id) и в конкретную версию рекламной страницы (val)

Соответственно кампаний много, часов много, в каждой кампании в каждый час используется какое то количество страниц.
Самих конверсий тоже много, под 170 000, и они постоянно добавляются. Можно ли как то это обрабатывать пакетно?
У тех конверсий, которые мы обсчитали и добавили значения pay в соответствующие строки таблицы А нужно ставить при этом метку, что конверсия обработана, дабы не получать неверные данные.

Буду очень признателен за помощь :)
...
Рейтинг: 0 / 0
19.12.2018, 08:35
    #39749937
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
А в чём сложность-то? сперва делаешь запрос, который обработает таблицу Б и получит нужные суммированные данные. Потом связываешь этот подзапрос с таблицей А по идентифицирующим полям, и обновляешься. Для метки в таблице Б можно ввести дополнительное поле с признаком обработанности... или неким предопределённым образом изменять существующие данные (скажем, изменением знака значения pay, если оно по клиентской логике всегда положительно).
...
Рейтинг: 0 / 0
19.12.2018, 11:29
    #39750039
seometis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
Сложность в том, что я гуманитарий :)
Дело в том, что не знаю, как это физически сделать, какой запрос использовать.. Ну и получается, что сегодня может прилететь конверсия за старый период и её тоже как то нужно учесть.
...
Рейтинг: 0 / 0
19.12.2018, 12:20
    #39750098
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
seometisсегодня может прилететь конверсия за старый период и её тоже как то нужно учестьЗапросу пофиг, когда и что в таблицу "прилетело" - он работает только с текущим состоянием данных.

seometisя гуманитарий ... не знаю, как это физически сделатьУгу, заметно...

Основная проблема не в том, КАК. Основная проблема - в отсутствии вменяемого ответа на вопрос "зачем это вообще нужно делать?".

Каждый раз, когда потребовалась актуальная сумма, по состоянию на текущий момент, её просто надо получать запросом. И нигде вообще не хранить. За ненадобностью. А также во избежание рассогласования данных - любой сбой, и итоговая сумма "уплывёт"... причём такие рассогласования весьма непросто отловить до того, как они создадут какую-нибудь вполне реальную проблему.
...
Рейтинг: 0 / 0
19.12.2018, 16:24
    #39750297
seometis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
Перерассчитывать данные по запросу пользователя весьма проблематично, потому что таблица А содержит миллионы строк, а таблица Б - сотни тысяч. :(
Единственный вариант - подготовить данные заранее и обновлять раз в полчаса-час. Операторы смотрят статистику не в целом, а по отдельным разрезам. Подключение индексации ко всем полям тоже мало помогает.
...
Рейтинг: 0 / 0
19.12.2018, 16:38
    #39750315
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
Значит, надо заводить не обновляемую статистику, а дискретную. Скажем, с дискретностью в час. Соответственно когда нужен бОльший диапазон, то вычисления производятся на этой "укрупнённой" статистике. А обновление данных инициирует триггер AFTER INSERT/UPDATE/DELETE, который, обнаружив изменение в "закрытом" периоде, по которому уже посчитана укрупнённая статистика, инициирует пересчёт (не корректировку!) соответствующего значения на основании обновлённого массива данных.
...
Рейтинг: 0 / 0
20.12.2018, 14:33
    #39750852
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
seometisне знаю, как это физически сделать, какой запрос использовать..
CREATE TRIGGER.
...
Рейтинг: 0 / 0
20.12.2018, 16:14
    #39750936
seometis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дополнить одну таблицу данными из другой
Спасибо за советы и идеи, ребят. Погуглю.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Дополнить одну таблицу данными из другой / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]