Как я могу использовать меру для определения самой ранней даты для многократно перечисленной записи визуального элемента таблицы, сохраняя при этом все визуальные фильтры нетронутыми?

#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] . Я точно не знаю, почему. Я думаю, что мне нужно взглянуть на свои отношения за столом, если я хочу лучшего понимания. …что я и сделаю.