Как разделить значения в одном столбце на основе столбца идентификаторов? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать столбец в таблице Power BI, который делит значения из одного столбца на основе столбца идентификатора, идентификаторы которого я указываю

Я понимаю, что мне нужно дважды пройти по столбцу, но яЯ немного смущен тем, как это сделать. Я использовал функцию LOOKUPVALUE, но постоянно получаю сообщение об ошибке. Ниже приведен код, над которым я работаю:

Answer =
OR(
IF (
    Table[ID] = 11,
    Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ),
    IF (
        Table[ID] = 12,
        Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ),
        IF ( Table[ID] = 13, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 ) )
    )
),IF ( Table[ID] = 31, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ) )
    )
),IF ( Table[ID] = 32, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ) )
    )
),IF ( Table[ID] = 33, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 ) )
    )
),IF ( Table[ID] = 51, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ) )
    )
),IF ( Table[ID] = 52, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ) )
    )
),IF ( Table[ID] = 53, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 ) )
    )
),0)

Ниже приведена демонстрация того, чего я хочу достичь

enter image description here

Пример таблицы отредактирован

1 Ответ

0 голосов
/ 25 октября 2019

Довольно странно иметь первые три строки в той же таблице, что и остальные, но я думаю, что-то вроде этого может работать для вас:

Answer = Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], MOD ( Table[ID], 10 ) )

Это делит Q на значение, соответствующеепоиск по последней цифре.


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

Если вы хотите явно указать совпадения ID, то я бы рекомендовал использовать SWITCHа не набор вложенных IF функций.

Например,

Answer =
SWITCH (
    Table[ID],
    11, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ),
    12, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ),
    13, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 ),
    31, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ),
    32, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ),
    33, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 ),
    51, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 1 ),
    52, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 2 ),
    53, Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], 3 )
)

Или, более компактно,

Answer =
VAR LookupID =
    SWITCH (
        TRUE (),
        Table[ID] IN { 11, 31, 51 }, 1,
        Table[ID] IN { 12, 32, 52 }, 2,
        Table[ID] IN { 13, 33, 53 }, 3
    )
RETURN
    Table[Q] / LOOKUPVALUE ( Table[Q], Table[ID], LookupID )

. SWITCH(TRUE(),...) конструкция:

DAX - дьявольский гений «ПРАВДЫ ПЕРЕКЛЮЧЕНИЯ»

...