Аналитика запросов#

Компонент OLAP упрощает многомерную аналитику и позволяет выполнять запросы с задержкой менее секунды на массивных объемах данных.

Вместо выполнения вычислений в режиме онлайн, компонент использует предварительно вычисленные данные, что значительно повышает производительность запросов.

Упрощенную версию процесса выполнения запроса можно описать следующим образом:

  1. Разбор SQL-оператора и извлечение всех предложений FROM.

  2. Поиск соответствующих моделей и минимальной стоимости для каждого предложения FROM.

    Соответствие здесь означает:

    • отношения таблиц, используемых в предложении FROM, должны соответствовать таблицам фактов и измерений, определенным в моделях (обратите внимание, что отношения LEFT JOIN не совпадают с INNER JOIN);

    • для агрегатных запросов столбцы в предложении GROUP BY должны быть определены как измерения в моделях, при этом агрегатные функции в предложении SELECT должны быть определены как меры в моделях;

    • для неагрегатных запросов в моделях должен быть определен индекс таблицы, а все столбцы, встречающиеся в запросе, должны содержаться в индексе таблицы.

    Минимальная стоимость означает, что OLAP автоматически выберет индекс с минимальной стоимостью, если есть несколько совпадающих индексов. Например, табличный индекс также может обслуживать агрегированные запросы, но его стоимость высока из-за вычисления в реальном времени. Поэтому использование табличного индекса для ответа на агрегированный запрос всегда является последним вариантом и происходит только тогда, когда все агрегированные индексы не могут совпасть.

  3. Если все пункты FROM совпадают, OLAP выполнит запрос, используя индексные данные.

    Все предложения FROM будут заменены предварительно вычисленными результатами, и запрос будет выполняться дальше, чтобы получить окончательный результат.

  4. Если в одном или нескольких предложениях FROM не удается найти подходящий индекс, то OLAP не может выполнить запрос с использованием индексных данных.

    Запрос завершится неудачей с сообщением об ошибке: «Модель не найдена» или «Реализация не найдена». Это означает, что данные, необходимые для этого запроса, не существуют в системе.

    В качестве особого случая, если механизм pushdown включен, то OLAP не будет сообщать об ошибке, а вместо этого направит этот запрос в механизм pushdown.