Мммм. Во-первых, создайте ассоциативный массив, если json генерируется из bakcend, например, в php, вы можете использовать функции для массивов заказов. ---> http://php.net/manual/en/array.sorting.php См. это: Преобразование объекта JavaScript с числовыми ключами в массив
Попробуйте это, чтобы избежать фильтра:
CREATE MEMBER CURRENTCUBE.[Measures].[FA and Team Product Count]
AS SUM(
Existing [Contact].[Contact ID].[Contact ID].Members
* Existing [Fund Sold].[Fund Sold ID].[Fund Sold ID].Members,
IIF([Measures].[FA And Team Gross Sales with FAs Including All Vehicles] >= 5000, 1, Null)
);
Если это все еще медленно, то опубликуйте расчет за FA And Team Gross Sales with FAs Including All Vehicles
. Более эффективный способ сделать это требует немного больше усилий но будет работать лучше, потому что избегает функции Existing
. Сначала вы должны создать столбец в DSV, который является вычисляемым столбцом в таблице фактов, используя это выражение:
CAST(null as int)
Затем создайте новый показатель под названием «FA и количество продуктов группы» в этом столбце. Разверните привязку столбца и выберите NullHandling = Сохранить. Это должна быть физическая мера, а не расчетная мера, потому что только совокупные назначения для физических мер агрегируются.
Затем добавьте следующее выражение в сценарий MDX (вместо расчетной меры, упомянутой вверху):
([Measures].[FA and Team Product Count],
[Contact].[Contact ID].[Contact ID].Members,
[Fund Sold].[Fund Sold ID].[Fund Sold ID].Members) =
IIF([Measures].[FA And Team Gross Sales with FAs Including All Vehicles] >= 5000, 1, Null);