У меня есть простая табличная модель, состоящая из таблицы фактов с ок. 20 мл. записи (транзакции продаж) и таблицу измерений с приблизительно 600 000 записей (клиентов).Эффективное отображение Top N в Excel Сводная таблица из таблицы SSAS Табличная модель
Типичный сценарий создания отчетов состоит в том, чтобы получить 10 лучших клиентов в какой-либо мере в таблице фактов, возможно, отфильтрованных по другим критериям (обычно это период времени, продукт и т. Д.).
В Excel, объединяющий все 20 млн. записи, чтобы вернуть общую сумму продаж, мгновенно. Тем не менее, как только я пытаюсь группировать клиентов, для получения всех данных требуется некоторое время (15-20 секунд), что имеет смысл, поскольку для этого требуется большое количество клиентов (600 000).
Теперь, если я применил фильтр значений в Excel, чтобы получить только 10 лучших клиентов, для возврата результата, который неприемлем для моих пользователей, все равно занимает около 15-20 секунд (так как они хотели бы сразу увидеть 10 лучших клиентов, нарезая другие атрибуты, такие как продукт, время и т. д.).
Внутренне, Excel использует TOPCOUNT
MDX-функцию при запросе табличной модели с фильтром значений.
Есть ли что-нибудь, что я могу сделать в табличной модели, чтобы ускорить эти запросы?
Я пробовал:
- Создание вычисляемого столбца по таблице размеров, содержащий количество общего объема продаж для каждого клиента. Хотя производительность лучше, это не путь, потому что значения в этом столбце не могут быть нарезаны другими атрибутами из фактов, и столбец, очевидно, заканчивается тем, что содержит множество различных значений (что плохо в табличном выражении).
- Создание расчетной меры в таблице фактов с использованием функции DAX
RANKX
, как предложено here. Это привело к сбою моего экземпляра Tabular (слишком много записей в таблице измерений?) - Выполнение простого заявления DAX непосредственно в табличной модели с использованием функции DAX
TOPN
. Это было еще медленнее, чемTOPCOUNT
MDX-подход, в 3-4 раза.
Я не уверен в решении, но планирую начать играть с PowerPivot в ближайшее время на работе - вы используете xl 32bit или 64bit? Что вы используете для обработки этих данных? – whytheq
Мы не используем PowerPivot - мы используем службы анализа SQL Server в табличном режиме (что в основном одно и то же, но развернуто в серверной среде). Сервер, о котором идет речь, имеет 32 ГБ оперативной памяти, что достаточно для этой модели, которая занимает всего около 1 ГБ памяти после ее обработки. – Dan
Создает отдельное измерение с именем TopCustomers? Предварительно подсчитав клиентов верхнего уровня по вашему расчетному столбцу в вашем ETL, а затем используя это как ваши ROWS в запросах Excel/MDX и ваши меры в столбцах? Если вы не можете достичь хорошей производительности, как вы говорите выше, с вашим оборудованием, создание измерения с помощью TopCustomers может быть лучшим способом ... – Mez