Как запретить Microstrategy вытягивать все данные

Мы создаем панель инструментов с множеством отчетов. Связь между таблицами определяется в микростратегии. Мы обнаружили, что Microstrategy не использует разные SQL для разных отчетов. Он извлекает все данные из базы данных (а это 46 миллионов), а затем применяет постобработку этих данных для создания отдельных отчетов. Это занимает много времени и не использует механизм запросов базы данных. Как мы можем настроить микростратегию, чтобы она генерировала разные запросы для разных отчетов и собирала только необходимые данные для конкретного отчета, а НЕ все данные.

Один из способов сделать это — использовать свободный язык SQL. Но мы хотим иметь возможность перетаскивать отчеты. Как мы можем этого добиться? Мы используем Микростратегию 10.1


person Luniam    schedule 15.12.2015    source источник


Ответы (3)


Судя по вашему описанию, Microstrategy сначала извлекает все данные (46 миллионов записей) из БД с помощью SQL Engine, а затем применяет фильтрацию.

Если ваши отчеты были созданы в разработчике Microstrategy (или в Интернете) с использованием фильтров атрибутов, тогда каждый отчет должен правильно выполнять sql, который имеет явные условия, которые переводятся в эти фильтры атрибутов. например если у вас есть отчет с атрибутом под названием «Фрукты» и вы хотите отображать только яблоки, тогда у вас будет фильтр атрибутов в этом отчете, который отображает только результаты, где «Фрукты» = «Яблоко». Это будет переведено в условие where в механизме SQL при выполнении отчета. Однако, если вы применяете фильтр представления к отчету, механизм SQL сначала получит все, а затем отфильтрует весь набор данных в аналитическом механизме, что будет медленным, особенно если запущено несколько отчетов. на приборной панели.

Важно знать, как вы переносите набор данных на информационную панель — используете ли вы куб в качестве набора данных, или отчет, или? Есть несколько способов добиться желаемой производительности, вот парочка:

  • Вариант 1. Создавайте каждый отчет в Microstrategy Developer, используя нужные фильтры атрибутов. Это потребует, чтобы все ваши отношения атрибутов были определены правильно.
  • Вариант 2. Соберите все свои 46 миллионов записей в куб. Используйте куб в качестве набора данных для информационной панели, а затем используйте фильтры просмотра, как хотите, для различных отчетов, которые вы хотите поместить в отчет.
  • Вариант 1 + 2. При желании вы можете комбинировать оба вышеуказанных варианта. Сохраните весь набор данных в кубе, определите несколько отчетов (обычные отчеты, а не отчеты куба), которые могут быть динамически получены из куба, используя необходимые фильтры, а затем добавьте эти отчеты на панель мониторинга.

Вот что я бы сделал в качестве первых шагов:

  1. Убедитесь, что ваши атрибуты и отношения атрибутов определены и работают.
  2. Создайте тестовый отчет и попробуйте отфильтровать по одному из этих атрибутов.
  3. Попробуйте создать несколько отчетов, каждый с разными условиями фильтрации на основе одного из атрибутов.
  4. Поместите эти отчеты на панель инструментов и посмотрите, генерирует ли каждый из них разные операторы SQL.
person Adeeb Armalite    schedule 19.01.2016

Похоже, у вас есть либо:

  1. построили отчеты, используя фильтры просмотра (которые применяют фильтрацию после выполнения запроса), а не применяя фильтр в сгенерированном SQL, или
  2. у вас не определены отношения атрибутов, так что система не считает, что определенные вами фильтры не относятся к таблицам фактов, содержащим данные.
person paulbailey    schedule 16.12.2015

Вы используете кубики? Я предполагаю, что вы имеете в виду, выполняя запрос один раз.

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

person Ashwin Aravind    schedule 23.12.2015