2016-08-04 4 views
0

Я рассчитываю на Distinct идентификаторов в столбце - это ведет к сумме подытог не будет пропорционален итогом следующим образом:DAX Ранга по дате

enter image description here

То, что я хочу сделать, это ранг Даты платежа в алфавитном порядке и выберите ТОЛЬКО самую высокую дату для отображения. В приведенном выше примере Grand Total не изменится, но в таблице Townville не будет показан отчетный счет ученика.

Это очень специфическое требование, и я предполагаю, что в DAX есть простой способ - я пробовал играть как с RANKX, так и с MAX, но не ближе к решению этого вопроса.

Последнее обязательное условие: Ранг должен быть контекстуальным для выбранного пользователем фильтра времени (поэтому, если они выбрали 2015, он даст вторую запись Ранг 1, а верхняя запись не будет отображаться. Если они выбирают май 2015 г. это дало бы рейтинг 1-го уровня, а вторая запись не будет показана)

ответ

1

Я думаю, что это то, что вы ищете, - я добавил расчетный столбец модели PowerPivot, которая обеспечивает ранжирование на основе последнего платежа Дата и имя студента. Это будет ранжировать самый ранний платеж для любого студента как 1.

код для столбца следующим образом:

=RANKX(FILTER(Table1, [Student Name] = EARLIER([Student Name])), [Last Payment Date]) 

... Если предположить, что таблица называется «Table1»!

FILTER - это ключ, который ограничивает ранжирование по датам, принадлежащим учащимся только с этим именем.

Обновление для нескольких таблиц

Чтобы установить отношения между таблицами, перейдите к «Диаграмма» Вид модели, доступные на вкладке Главная окна питания Pivot.

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

Из комментария я попытался бы заставить Платежи действовать как факт и связать его с таблицами Сообщества и Студента. в этом случае, вы могли бы иметь следующий код:

=RANKX(FILTER(Table1, Related('Students'[Student Name]) = EARLIER('Students'[Student Name])), [Last Payment Date]) 

Этот вычисляемый столбец будет на вашей Payments таблицы фактов, и он использует поиск в соответствующую область.

Обратите внимание, что в этом конкретном случае было бы проще просто запустить фильтр над полем идентификатора студента, которое используется для поиска имени студента.

+0

Спасибо Стюарту, я должен добавить, что для нас эти данные находятся в разных таблицах. У нас есть таблица «Community», таблица «Расходы/Платежи» и таблица «Студент». Есть ли способ использовать фильтр таким образом по нескольким таблицам информации? – mwan

+0

Я добавил обновление для случая связанных таблиц - если его все еще недостаточно, может быть хорошей идеей обновить ваш вопрос с помощью более подробной информации о модели PowerPivot. Надеюсь, что это поможет! –

+0

Это очень помогло! Благодаря! Я приложу некоторое время на обновление моего вопроса с моим окончательным решением ради других, спотыкающихся об этом. – mwan

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