МАКСИМАЛЬНОЕ значение на основе двух чисел и одного текста

#excel #powerbi #dax #powerpivot

#excel #powerbi #dax #powerpivot

Вопрос:

У меня есть огромная таблица Order-Master, которая содержит полную производственную маршрутизацию для каждого заказа. Теперь я хотел бы определить последнее отслеживаемое количество в этой таблице. Таблица имеет структуру, подобную:

  • Номер заказа
  • Prio 1 (число)
  • Prio 2 (число)
  • Prio 3 (текст)
  • Количество

Мера должна сначала смотреть на Prio 1, затем на Prio 2 и, наконец, на Prio 3. Prio и Prio 2 — это возможные числа от 2 до 99. В Prio 3 возможны разные текстовые строки, но для отслеживаемого количества необходимы только «OX» и «OK». Здесь «OX» всегда имеет больший приоритет, чем «OK».

Как бы вы построили это как показатель DAX? MAXX, CALCULATEDTABLE, РАНГ, TOPN?

Это мой первый подход:

 VAR Max1 =
    MAXX (
        ALLSELECTED ( 'Order Master' ),
        'Order Master'[Prio 1]
    )
VAR Max2 =
    MAXX (
        ALLSELECTED ( 'Order Master' ),
        'Order Master'[Prio 2]
    )
RETURN  
MAXX(
    FILTER(
        'Order Master',
            'Order Master'[Prio 1] = Max1 amp;amp; 'Order Master'Prio 2] = Max2
    ),
    'Order Master'[Quantity]
)
  

Комментарии:

1. Лучший вариант — предоставить некоторые образцы данных и то, какой вывод вам нужен из них.

2. Являются ли Prio 2 и 3 ограничителями, когда Prio 1 одинаковый для нескольких заказов?

Ответ №1:

Я бы перевел «OX» и «OK» в числа, как и другие приоритеты. Это можно сделать очень просто, используя формулу IF:

 =IF(A1="OX";0;IF(A1="OK";1;-1))
  

(Очевидно, в качестве примера)

Если, однако, под «OX» вы подразумеваете все возможные значения для «X», такие как «O1», «O32», …, тогда я бы предложил вам написать функцию VBA для выполнения упомянутого перевода.

Комментарии:

1. Спасибо за ваш ответ! Как бы вы изменили эти значения в DAX-мере? Я работаю в Power BI. Нет, означает именно «OX» и «OK».