Циклическое условие n раз со ссылкой на n нет.строк из другой таблицы в powerbi - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть справочная таблица времени TimeTable и другая таблица данных Datatable, как на рисунке.enter image description here

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

Ref_Time = IF(
            TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:35:00 AM") , "6:00:00 AM",
            IF(
                TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:30:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:35:00 AM"), "5:30:00 AM",
                IF(
                    TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:25:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:30:00 AM"), "5:25:00 AM",
                    IF(
                        TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:20:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:25:00 AM"), "5:20:00 AM",
                        IF(
                            TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:15:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:20:00 AM"), "5:15:00 AM",
                            IF(
                                TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:10:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:15:00 AM"), "5:10:00 AM",
                                IF(
                                    TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:05:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:10:00 AM"), "5:05:00 AM",
                                    IF(
                                        TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("5:00:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:05:00 AM"), "5:00:00 AM",
                                        IF(
                                            TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("4:55:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("5:00:00 AM"), "4:55:00 AM",
                                            IF(
                                                TIMEVALUE(DataTable[endTime]) >= TIMEVALUE("2:00:00 AM") && TIMEVALUE(DataTable[endTime]) < TIMEVALUE("4:55:00 AM"), "2:00:00 AM",
                                                IF(
                                                    TIMEVALUE(DataTable[endTime]) < TIMEVALUE("2:00:00 AM") , "1:00:00 AM"
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )

1 Ответ

0 голосов
/ 20 декабря 2018

Это должно быть немного легче для чтения, и должно делать то, что вам нужно:

Ref_Time =
SWITCH (
    TRUE (),
    TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:35:00 AM" ), "6:00:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:30:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:35:00 AM" )
    ), "5:30:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:25:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:30:00 AM" )
    ), "5:25:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:20:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:25:00 AM" )
    ), "5:20:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:15:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:20:00 AM" )
    ), "5:15:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:10:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:15:00 AM" )
    ), "5:10:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:05:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:10:00 AM" )
    ), "5:05:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "5:00:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:05:00 AM" )
    ), "5:00:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "4:55:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "5:00:00 AM" )
    ), "4:55:00 AM",
    AND (
        TIMEVALUE ( DataTable[endTime] ) >= TIMEVALUE ( "2:00:00 AM" ),
        TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "4:55:00 AM" )
    ), "2:00:00 AM",
    TIMEVALUE ( DataTable[endTime] ) < TIMEVALUE ( "2:00:00 AM" ), "1:00:00 AM"
)
...