Короткий ответ Данные из каждого источника нужно привести к одинаковой структуре столбцов (дата, канал, расход, конверсии) отдельными запросами, а затем объединить через UNION ALL в одну таблицу для дальнейшей агрегации. Как это работает подробнее Поскольку таблицы из разных источников обычно имеют разные названия столбцов (например, cost в одной, spend в другой), сначала их приводят к единым алиасам, а затем объединяют запросом с UNION ALL, после чего группируют по дате и каналу. При появлении новых источников (например, TikTok Ads) структуру запроса удобно расширять добавлением ещё одного блока UNION ALL с тем же набором алиасов столбцов, без изменения логики агрегации. Пример кода Что использовать на практике Практика. На практике такую объединённую таблицу удобно материализовать (сохранить как отдельную таблицу или view) и обновлять по расписанию, а не пересчитывать на лету при каждом открытии дашборда, особенно если источников много. Полезно также вынести приведение названий каналов к единому стандарту (