2016-03-09 4 views
0

Из-за проблем с производительностью мне нужно удалить несколько отдельных счетчиков на моем DAX. Тем не менее, у меня есть конкретный сценарий, и я не могу понять, как это сделать.Избегайте DISTINCTCOUNT в PowerPivot

В качестве примера предположим, что один или несколько ресторанов могут быть наняты на одном или нескольких праздниках и подготовить одно или несколько меню (см. Данные ниже).

enter image description here

Я хочу таблицу PowerPivot, которая показывает во сколько праздников каждый ресторан присутствовал (смотрите таблицу ниже). Я достиг этого, используя purecount.

enter image description here

Почему не на это предварительное вычисление мощности запросе? Реальные данные, которые у меня есть, немного сложнее (больше столбцов ИД), и для того, чтобы иметь возможность поворачивать данные, мне нужно было бы вычислить тысячи возможных комбинаций.

Я попытался добавить к моей модели таблицу размеров стола (на примере это будет только 1 столбец из 2 строк). Я надеялся использовать эти отношения, чтобы иметь возможность сделать счет, но я не смог придумать правильный DAX для этого.

+0

Какой процент праздников имеет одно меню и один ресторан? Если это значительное число, попробуйте эту оптимизацию: http://www.artisconsulting.com/blogs/greggalloway/2015/9/28/optimizing-large-distinct-counts-in-analysis-services-tabular – GregGalloway

ответ

0

Вы можете использовать COUNTROWS() в сочетании с VALUES().

В частности, COUNTROWS() даст вам количество строк в таблице. Это означает, что COUNTROWS ожидает ввода таблицы. Вот волшебная часть: VALUES() вернет таблицу в качестве результатов, а возвращаемая ею таблица - это значения , отличные от значений в таблице/столбце, которые вы предоставляете в качестве аргумента для VALUES().

Я не уверен, если я объясняю это хорошо, поэтому для данных выборки вы предоставили, эта мера будет выглядеть следующим образом (предполагается, что таблица с именем Table1):

Unique Feasts:=COUNTROWS(VALUES('Table1'[Feast Id])) 

Вы можете затем создайте сводную таблицу из Powerpivot и перетащите идентификатор ресторана в строки и перетащите меру выше в значения. Тот же результат, что и DISTINCTCOUNT, но с меньшими накладными расходами (я думаю).

Смежные вопросы