Нахождение минимального значения фильтрации двух столбцов - PullRequest
0 голосов
/ 30 января 2019

В PowerPivot я пытаюсь найти значение Min в таблице на основе двух значений столбца.Мои данные содержат несколько человек на несколько дат с разными отрезками времени.Для каждого человека на каждую дату мне нужно определить самый ранний отрезок времени в данных.

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

=
IF (
    CALCULATE (
        MIN ( [start] ),
        FILTER ( actual, [Agent_User_Name] = EARLIER ( [Agent_User_Name] ) )
    )
        = [start],
    TRUE (),
    FALSE ()
)

    Agent_User_Name     date      start
    Susan               1/1/19    08:00
    Susan               1/1/19    08:45
    Susan               1/1/19    10:00
    Susan               1/2/19    08:30
    Susan               1/2/19    09:00
    Timothy ....

Я пытаюсь определить, что самое раннее время Сьюзен 01.01.199было 08:00, 1/2/19 - 08:30 и пометьте эту запись как истинную или ложную в самое раннее время.

1 Ответ

0 голосов
/ 30 января 2019

Если вы хотите создать вычисляемый столбец:

=
VAR Min_Time =
    CALCULATE (
        MIN ( Actual[Start] ),
        ALLEXCEPT ( Actual, Actual[Agent_User_Name], Actual[date] )
    )
RETURN
    IF ( Actual[Start] = Min_Time, TRUE (), FALSE () )

Здесь для каждой строки мы находим минимальное начало во всем начальном столбце (именно поэтому мы используем ВСЕ), но сохраняя значения в текущей строке Agent_User_Name и Dateфильтры (вот почему КРОМЕ).Фактически он группирует начальный столбец по текущему пользователю и дате.

Результат:

enter image description here


Вы также можете сделать его динамической мерой:

=
MINX (
    SUMMARIZE (
        Actual,
        Actual[Agent_User_Name],
        Actual[date],
        "Min_Time", MIN ( Actual[start] )
    ),
    [Min_Time]
)

Результат:

enter image description here

Редактировать:

VAR работает для Excel 2016 или более поздней версии.Если у вас более старые версии Excel, перепишите формулу без переменных:

= IF (
        Actual[Start]
            = CALCULATE (
                MIN ( Actual[Start] ),
                ALLEXCEPT ( Actual, Actual[Agent_User_Name], Actual[date] )
            ),
        TRUE (),
        FALSE ()
    )

Не так чисто и читабельно, как с VAR, но должно работать.Если вы можете, переключитесь на Excel 2016 как можно скорее - Power Pivot намного лучше.

...