Ошибка DAX: выражения, которые дают вариантный тип данных, не могут использоваться для определения вычисляемых столбцов - PullRequest
0 голосов
/ 28 марта 2019

Я снова вернулся, ребята, с новым выпуском ... Я не понимаю эту силу би, это так просто на Excel, ха-ха.

Я получаю следующую ошибку:

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

SLASERV1 = IF('DIARIO Backlog de incidencias'[Prioridad];"";
IF(OR('DIARIO Backlog de incidencias'[Prioridad]="Crítica";'DIARIO Backlog de incidencias'[Prioridad]="Máxima");4-('DIARIO Backlog de incidencias'[Horas totales sin Pending]*24);
IF(OR('DIARIO Backlog de incidencias'[Prioridad]="Alta";'DIARIO Backlog de incidencias'[Prioridad]="High");8-('DIARIO Backlog de incidencias'[Horas totales sin Pending]*24);
IF(OR('DIARIO Backlog de incidencias'[Prioridad]="Media";'DIARIO Backlog de incidencias'[Prioridad]="Medium");24-('DIARIO Backlog de incidencias'[Horas totales sin Pending]*24);
IF(OR('DIARIO Backlog de incidencias'[Prioridad]="Baja";'DIARIO Backlog de incidencias'[Prioridad]="Low");48-('DIARIO Backlog de incidencias'[Horas totales sin Pending]*24)
)))))

POWER BI COLUMNS

enter image description here enter image description here

Как это делается в Excel (столбец Pрезультат мне нужен):

enter image description here

=IF(K3<>"";IF(E3="";"";
     IF(OR(E3="Crítica";E3="Máxima";E3="Urgent");4-(Q3*24);
        IF(OR(E3="Alta";E3="High");8-(Q3*24);
           IF(OR(E3="Media";E3="Medium");24-(Q3*24);
              IF(OR(E3="Baja";E3="Low");48-(Q3*24)
 ))))))

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Ошибка, по-видимому, с первым оператором IF:

SLASERV1 = IF('DIARIO Backlog de incidencias'[Prioridad];"";

В некоторых случаях вы возвращаете текст, а в других - число.

Однако: вложение IF таких выражений не лучший способ сделать это - выражение SWITCH было бы более понятным. Что-то вроде:

SLASERV1 = 
VAR SLA_Horas = 
    SWITCH ( 
        'DIARIO Backlog de incidencias'[Prioridad],
        "Crítica", 4,
        "Máxima", 4, 
        "Alta", 8,
        "High", 8,
        "Media", 24,
        "Medium", 24,
        "Baja", 48,
        "Low", 48,
        BLANK()
    )
RETURN
    IF ( 
        ISBLANK ( SLA_Horas ),
        BLANK(),
        SLA_Horas - ( 'DIARIO Backlog de incidencias'[Horas totales sin Pending] * 24 )
    )

Что было бы еще лучше, так это иметь отдельную таблицу для сохранения приоритетов / часов SLA. Что-то вроде:

enter image description here

Создайте связь между этой таблицей и таблицей фактов в поле Prioridad, затем вы можете создать вычисляемый столбец, используя:

SLASERV2 = RELATED ( SLA[SLA Hours] ) - ( 'DIARIO Backlog de incidencias'[Horas totales sin Pending] * 24 )

См. https://pwrbi.com/so_55396655/ для примера файла PBIX.

0 голосов
/ 28 марта 2019

эта ошибка совершенно очевидна, не так ли?

Столбец Powerbi ожидает один тип данных, то есть число ИЛИ текст. Не могу сделать оба.

Если вы хотите один столбец, оберните остальную часть в функции формата следующим образом:

format(48-('DIARIO Backlog de incidencias'[Horas totales sin Pending]*24), "")

Подробнее о формате здесь: https://docs.microsoft.com/en-us/dax/format-function-dax

Но я бы посоветовал вам создать два столбца, один с меткой, а второй с номером

...