Страницы: 1
RSS
Не получается сделать в BI построчную суммеслимн с корректным итогом
 
Добрый день!

В BI есть две несвязанные таблицы.
Первая - 'Календарь', в которой есть информация по рабочему времени на каждый день (там сложная формула, так что считается предварительно в Power Query). По сути интересуют только поля 'Календарь'[Date] и 'Календарь'[Время]

Во второй таблице - 'БД' - список задач, с датами начала и завершения

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

Сейчас работает вот это:
1) Мера для выбора задач, которые попадают в выбранный период:
Скрытый текст
2) Мера для расчёта времени по каждой строке. Итоговые значения считает ошибочно. + никуда не могу уйти от функции SELECTEDVALUE - если ее нет, то ругается, что невозможно определить одно значение для столбца
Скрытый текст

Соответственно вопрос - SELECTEDVALUE 100% не оптимальный вариант, но сделать иначе не получается - можно заменить на MIN или MAX, но итог все равно не верный будет
Как правильно посчитать сумму всех строк для итога меры [Расчёт времени]?
 
Andrey Belkin, на прошлой неделе решали похожую задачу, если я вас правильно понял. Попробуйте подходы оттуда.
Вот горшок пустой, он предмет простой...
 
Спасибо, Пух, помогло разобраться. Не совсем как хотел, но сделал. Благодарю!
 
Andrey Belkin, что-то долго въезжал, что Вы хотите:)
Так корректно?
Код
Мера =
VAR endDate =
    MAX ( 'Календарь'[Date] )
VAR result =
    SUMX (
        'БД',
        IF (
            [Чек] > 0,
            CALCULATE (
                SUM ( 'Календарь'[Время] ),
                DATESBETWEEN (
                    'Календарь'[Date],
                    'БД'[Дата начала],
                    IF (
                        ISBLANK ( 'БД'[Дата завершения] ),
                        endDate,
                        MIN ( 'БД'[Дата завершения], endDate )
                    )
                )
            )
        )
    )
RETURN
    result
Изменено: surkenny - 17.01.2022 20:40:49
 
Andrey Belkin, слегка изменил меры для понятности:
Код
Мера =
VAR endDate =
    MAX ( 'Календарь'[Date] )
VAR dataTbl =
    FILTER ( 'БД', [чек] )
VAR result =
    SUMX (
        dataTbl,
        CALCULATE (
            SUM ( 'Календарь'[Время] ),
            DATESBETWEEN (
                'Календарь'[Date],
                'БД'[Дата начала],
                IF (
                    ISBLANK ( 'БД'[Дата завершения] ),
                    endDate,
                    MIN ( 'БД'[Дата завершения], endDate )
                )
            )
        )
    )
RETURN
    result

Код
Чек = 
COUNTROWS (
    FILTER (
        'БД',
        'БД'[Дата начала] <= MAX ( 'Календарь'[Date] )
            && (
                'БД'[Дата завершения] >= MIN ( 'Календарь'[Date] )
                    || 'БД'[Дата завершения] = BLANK ()
            )
    )
) 
 
surkenny, спасибо! буду разбираться тоже - ваши меры побыстрее работают
Изменено: Andrey Belkin - 18.01.2022 09:24:20
Страницы: 1
Наверх