Хобрук: Ваш путь к мастерству в программировании

Объединение DISTINCT COUNT с ActivePivot

Какой самый эффективный способ настроить агрегацию DISTINCT COUNT в ActivePivot?

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



Ответы:


1

Поскольку ActivePivot поддерживает язык MDX, вы можете делать это в MDX. Вот пример, в котором мы определяем вычисляемый элемент многомерных выражений, который подсчитывает отдельные рабочие столы, входящие в ячейку. (этот запрос будет выполняться в образце приложения ActivePivot Sandbox)

WITH
Member [Measures].[Desk Count] AS Count(
  Descendants(
    [Bookings].[Desk].CurrentMember,
    [Bookings].[Desk].[Desk]
  ),
  EXCLUDEEMPTY
)
SELECT NON EMPTY Hierarchize(
  DrilldownLevel(
    [Underlyings].[Products].[ALL].[AllMember]
  )
) ON ROWS
FROM [EquityDerivativesCube]
WHERE [Measures].[Desk Count]

Но наиболее эффективным способом является использование постпроцессора, поскольку постпроцессоры работают в основном механизме агрегирования ActivePivot, в то время как механизм многомерных выражений работает на более высоком уровне. Постпроцессор LEAF_COUNT предназначен для этой цели, вот как вы можете объявить его в приложении Sandbox:

<postProcessor name="DeskCount" pluginKey="LEAF_COUNT" formatter="LONG[#,###]">
    <properties>
        <entry key="leafLevels" value="Desk@Desk@Bookings" />
    </properties>
</postProcessor>

Поскольку постпроцессор должен быть объявлен в конфигурации куба, он не такой гибкий, как решение MDX, которое пользователь может применить к любой иерархии в последнюю минуту. Но опять же, это более эффективно, особенно в контексте иерархий с большой мощностью.

19.08.2014
Новые материалы

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

React Hooks: основы деструктуризации массива
Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

Пакеты R, используемые в Tesla
Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

Сокращение и слияние токенов для эффективных моделей VL: обзор
Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..