Аналитика запросов#
Компонент OLAP упрощает многомерную аналитику и позволяет выполнять запросы с задержкой менее секунды на массивных объемах данных.
Вместо выполнения вычислений в режиме онлайн, компонент использует предварительно вычисленные данные, что значительно повышает производительность запросов.
Упрощенную версию процесса выполнения запроса можно описать следующим образом:
Разбор SQL-оператора и извлечение всех предложений
FROM.Поиск соответствующих моделей и минимальной стоимости для каждого предложения
FROM.Соответствие здесь означает:
отношения таблиц, используемых в предложении
FROM, должны соответствовать таблицам фактов и измерений, определенным в моделях (обратите внимание, что отношенияLEFT JOINне совпадают сINNER JOIN);для агрегатных запросов столбцы в предложении
GROUP BYдолжны быть определены как измерения в моделях, при этом агрегатные функции в предложенииSELECTдолжны быть определены как меры в моделях;для неагрегатных запросов в моделях должен быть определен индекс таблицы, а все столбцы, встречающиеся в запросе, должны содержаться в индексе таблицы.
Минимальная стоимость означает, что OLAP автоматически выберет индекс с минимальной стоимостью, если есть несколько совпадающих индексов. Например, табличный индекс также может обслуживать агрегированные запросы, но его стоимость высока из-за вычисления в реальном времени. Поэтому использование табличного индекса для ответа на агрегированный запрос всегда является последним вариантом и происходит только тогда, когда все агрегированные индексы не могут совпасть.
Если все пункты
FROMсовпадают, OLAP выполнит запрос, используя индексные данные.Все предложения
FROMбудут заменены предварительно вычисленными результатами, и запрос будет выполняться дальше, чтобы получить окончательный результат.Если в одном или нескольких предложениях
FROMне удается найти подходящий индекс, то OLAP не может выполнить запрос с использованием индексных данных.Запрос завершится неудачей с сообщением об ошибке: «Модель не найдена» или «Реализация не найдена». Это означает, что данные, необходимые для этого запроса, не существуют в системе.
В качестве особого случая, если механизм pushdown включен, то OLAP не будет сообщать об ошибке, а вместо этого направит этот запрос в механизм pushdown.