Мне нужна помощь в разработке базы данных агрегированной таблицы.
У меня есть денормализованная таблица, в которой хранится информация о веб-сеансе пользователя, такая как источник, автор страницы, местоположение пользователя, время посещения страницы и т. Д.
У меня есть определенные аналитические запросы, такие как количество уникальных пользователей за определенный период времени, количество пользовательских сессий и т. Д., Которые могут обслуживаться различными фильтрами, такими как WHERE author = 'ABC'
или WHERE user_location = 'UK'
и т. Д.
Поскольку объем данных, которые будут сканироваться при инициировании вышеупомянутых запросов, будет значительно большим, у меня был план создать сводную таблицу поверх фактической таблицы. Тем не менее, я застрял при этом, поскольку я не могу обслуживать вышеупомянутые запросы из агрегированной таблицы. Это потому, что я вижу значительный всплеск количества, когда фильтры не применяются. Вот таблица, которую я спроектировал. Гранулярность таблицы составляет 1 запись для каждого местоположения / автора / источника.
create table agg (
date_key bigint,
num_sess int,
author varchar(255),
location varchar(255),
source varchar(255)
);
Я хотел бы получить некоторые предложения относительно структуры таблицы, которые я должен иметь, чтобы иметь агрегированное представление.