Scope Statement Альтернатива медленному счетчику CrossJoin MDX

Мммм. Во-первых, создайте ассоциативный массив, если json генерируется из bakcend, например, в php, вы можете использовать функции для массивов заказов. ---> http://php.net/manual/en/array.sorting.php См. это: Преобразование объекта JavaScript с числовыми ключами в массив

0
задан user10741081 18 January 2019 в 19:27
поделиться

1 ответ

Попробуйте это, чтобы избежать фильтра:

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);
0
ответ дан GregGalloway 18 January 2019 в 19:27
поделиться