|
|
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
Привет! Есть вопрос по поводу реализации следующей дичи: Есть таблица А, в которой хранится суммированная статистика по кликам и затратам рекламных кампаний по часам, с полями: 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 в соответствующие строки таблицы А нужно ставить при этом метку, что конверсия обработана, дабы не получать неверные данные. Буду очень признателен за помощь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 01:25 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
А в чём сложность-то? сперва делаешь запрос, который обработает таблицу Б и получит нужные суммированные данные. Потом связываешь этот подзапрос с таблицей А по идентифицирующим полям, и обновляешься. Для метки в таблице Б можно ввести дополнительное поле с признаком обработанности... или неким предопределённым образом изменять существующие данные (скажем, изменением знака значения pay, если оно по клиентской логике всегда положительно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 08:35 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
Сложность в том, что я гуманитарий :) Дело в том, что не знаю, как это физически сделать, какой запрос использовать.. Ну и получается, что сегодня может прилететь конверсия за старый период и её тоже как то нужно учесть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 11:29 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
seometisсегодня может прилететь конверсия за старый период и её тоже как то нужно учестьЗапросу пофиг, когда и что в таблицу "прилетело" - он работает только с текущим состоянием данных. seometisя гуманитарий ... не знаю, как это физически сделатьУгу, заметно... Основная проблема не в том, КАК. Основная проблема - в отсутствии вменяемого ответа на вопрос "зачем это вообще нужно делать?". Каждый раз, когда потребовалась актуальная сумма, по состоянию на текущий момент, её просто надо получать запросом. И нигде вообще не хранить. За ненадобностью. А также во избежание рассогласования данных - любой сбой, и итоговая сумма "уплывёт"... причём такие рассогласования весьма непросто отловить до того, как они создадут какую-нибудь вполне реальную проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 12:20 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
Перерассчитывать данные по запросу пользователя весьма проблематично, потому что таблица А содержит миллионы строк, а таблица Б - сотни тысяч. :( Единственный вариант - подготовить данные заранее и обновлять раз в полчаса-час. Операторы смотрят статистику не в целом, а по отдельным разрезам. Подключение индексации ко всем полям тоже мало помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:24 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
Значит, надо заводить не обновляемую статистику, а дискретную. Скажем, с дискретностью в час. Соответственно когда нужен бОльший диапазон, то вычисления производятся на этой "укрупнённой" статистике. А обновление данных инициирует триггер AFTER INSERT/UPDATE/DELETE, который, обнаружив изменение в "закрытом" периоде, по которому уже посчитана укрупнённая статистика, инициирует пересчёт (не корректировку!) соответствующего значения на основании обновлённого массива данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:38 |
|
||
|
Дополнить одну таблицу данными из другой
|
|||
|---|---|---|---|
|
#18+
seometisне знаю, как это физически сделать, какой запрос использовать.. CREATE TRIGGER. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 14:33 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1829404]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 140ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...