Какой самый эффективный способ настроить агрегацию DISTINCT COUNT в ActivePivot?
Например, если я хочу настроить показатель, который для каждой ячейки возвращает количество различных продуктов, входящих в эту ячейку.
Какой самый эффективный способ настроить агрегацию DISTINCT COUNT в ActivePivot?
Например, если я хочу настроить показатель, который для каждой ячейки возвращает количество различных продуктов, входящих в эту ячейку.
Поскольку 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, которое пользователь может применить к любой иерархии в последнюю минуту. Но опять же, это более эффективно, особенно в контексте иерархий с большой мощностью.