#powerbi #dax
Вопрос:
У меня есть визуальный элемент таблицы в Power BI, в основном такой (я использую excel здесь только в качестве общего представления таблицы Power BI).:
Столбцы Название проекта, Приоритет, Номер направления, Дата начала проекта, Дата окончания проекта, Руководитель проекта, Филиал Клиента, POC Клиента и Организация клиента-все они взяты из таблицы с именем Проекты.
Столбцы Имя задачи и Дата завершения задачи взяты из таблицы под названием Задачи.
Таблицы Проектов и задач связаны между собой.
Визуальный элемент таблицы фильтруется по столбцу «Клиент» из таблицы «Проекты» с помощью среза. Он также дополнительно фильтруется по этим дополнительным столбцам, которые отсутствуют в визуальном представлении, но взяты из таблицы проектов, с использованием срезов: Статус проекта, Организационная группа, Тип работы и Финансовый год проекта.
Визуальный элемент таблицы дополнительно фильтруется еще одним столбцом, которого нет в визуальном элементе, но который находится в таблице задач, с помощью среза: Уровень задачи.
Мне нужно сохранить все фильтры нетронутыми и определить самую раннюю дату завершения задачи для каждого проекта (Название проекта). Я пытаюсь использовать меру.
Я пытался:
EarliestTaskFinishDate =
CALCULATE (
MIN ( Tasks[Task Finish Date] ),
ALLEXCEPT ( Projects, Projects[Project Name])
)
Но это не дает желаемого результата. Он просто дублирует даты завершения задачи для каждой задачи, вместо того чтобы указывать самую раннюю дату завершения задачи для проекта.
Я также попытался заменить FIRSTDATE
MIN
, что дало тот же результат.
Кроме того, я попытался использовать варианты ALLSELECTED
вместо ALLEXCEPT
, но и с этим у меня ничего не вышло.
Я дополнительно попробовал следующее и получил точно такой же результат.
EarliestTaskFinishDate =
VAR PN = IF(COUNTROWS(VALUES(Projects[Project Name])) > 1, BLANK(), VALUES(Projects[Project Name]))
RETURN
CALCULATE (
MINX( Tasks, Tasks[Task Finish Date] ),
FILTER('Projects', 'Projects'[Project Name] = PN)
)
Конечно, использование EARLIER
не является вариантом для измерения. Мне определенно не помешала бы помощь, пожалуйста.
Ответ №1:
попробуйте с:
EarliestTaskFinishDate =
CALCULATE (
MIN ( Tasks[Task Finish Date] ),
FILTER( ALLSELECTED ( Projects), Projects[Project Name] = SELECTEDVALUE(Projects[Project Name]))
)
Комментарии:
1. Спасибо msta42a. Ваша рекомендация имеет для меня полный смысл, но я все еще получаю тот же результат при таком подходе, что и раньше. Мера заключается в том , чтобы просто указать
Task Finish Date
каждую конкретную задачу какEarliestTaskFinishDate
, а не как фактическую самую раннююTask Finish Date
из всех задач для проекта какEarliestTaskFinishDate
.2. если вы можете опубликовать свои образцы данных в виде обычного текста, я попытаюсь (в настоящее время у меня нет образца для работы, а повторный ввод занимает слишком много времени).
3.Похоже, я понял ответ:
EarliestTaskFinishDate = CALCULATE ( MIN ( Tasks[Task Finish Date] ), ALLSELECTED ( Tasks ), VALUES ( Tasks[Project Name] ) )
Название проекта также есть в моей таблице задач. Это не сработает, если я буду использоватьProject[Project Name]
вместоTasks[Project Name]
. Я точно не знаю, почему. Я думаю, что мне нужно взглянуть на свои отношения за столом, если я хочу лучшего понимания. …что я и сделаю.