Рекомендации по созданию генератора аналитических запросов (SQL)
Мы переходим от служб аналитики Microsoft (SSAS) к базе данных HP Vertica в качестве нашего решения OLAP. Частично это включает изменение языка запросов с MDX на SQL. У нас был собственный генератор запросов MDX, который позволял другим запрашивать данные через API или пользовательский интерфейс, указывая необходимые измерения и факты (выходные данные). Сгенерированные запросы MDX были в порядке, и нам не приходилось обрабатывать объединения вручную.
Однако теперь мы используем язык SQL и, поскольку мы храним данные в разных таблицах фактов, нам необходимо найти способ генерирования этих запросов с использованием одинаковых примитивов измерения и факта.
Например. если пользователь хочет увидеть имя клиента вместе с количеством продаж, мы можем принять запрос:
dimensions: { 'client_name' }
facts: { 'total_number_of_sales' }
и сгенерируйте запрос следующим образом:
select clients.name, sum(sales.total)
from clients
join sales on clients.id = sales.client_id
group by 1
И это становится все сложнее очень быстро.
Я имею в виду решение на основе графа, которое будет хранить отношения между таблицами измерений и фактов, и я мог бы построить необходимые объединения, найдя кратчайший путь между узлами в графе.
Я был бы очень признателен за любую информацию по этому вопросу, включая любые ключевые слова, которые я должен использовать, чтобы найти решение проблемы такого типа или сторонние продукты, которые могли бы ее решить. Я пытался найти его, но проблемы были совсем другими.
1 ответ
Вы можете использовать бесплатный движок Mondrian OLAP, который может выполнять запросы, написанные на языке MDX в верхней части реляционной базы данных (RDBMS).
Для составления отчетов вы можете попробовать Saiku или Pentaho BI сервер на Mondrian OLAP.