Мы переходим от служб анализа Microsoft (SSAS) к базе данных HP Vertica в качестве нашего решения OLAP. Отчасти это связано с изменением языка запросов с MDX на SQL. У нас был пользовательский генератор запросов MDX, который позволял другим запрашивать данные через api или пользовательский интерфейс, указав необходимые измерения и факты (выходы). Сгенерированные запросы MDX были в порядке, и нам не пришлось обрабатывать соединения вручную.Рекомендации по созданию генератора аналитических запросов (SQL)
Однако теперь мы используем язык 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
И это становится более сложным, очень быстро ,
Я думаю о решении на основе графа, которое хранит отношения между таблицами измерений и фактов, и я мог бы построить необходимые объединения, найдя кратчайший путь между узлами в графе.
Я бы очень признателен за любую информацию по этому вопросу, включая любые ключевые слова, которые я должен использовать для поиска решения этой проблемы или сторонних продуктов, которые могли бы ее решить. Я попытался найти его, но проблемы были совсем другими.