Создайте новый столбец в соответствии со значением в другом столбце в SQL/powerBI

У меня есть набор данных, например:

ID    TYPE  POM   POM_new
1234   sys   100   100
1234   pm    101   100
2345   pm    300   302
2345   sys   302   302

Я хочу создать новый столбец (POM_new), как указано выше. Новый столбец должен принимать значение поля «POM» на основе поля TYPE, т. е. «sys».

Я хочу сделать это в SQL(HANA) или Powerbi. Пробовал с кодом ниже, но безуспешно.

POM New = CALCULATE(MAX(tablename[POM]),FILTER(LPR,tablename[TYPE] = "SYS"),ALLEXCEPT(LPR,tablename[ID]))
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать стандартный SQL с аналитической функцией следующим образом:

SELECT ID, TYPE, POM, 
       MIN(CASE WHEN TYPE = 'sys' THEN POM END) OVER (PARTITION BY ID) AS POM_NEW
  FROM YOUR_TABLE T;

Отлично сработало. Спасибо за обучение.

kumarb 15.12.2020 08:24

Если вы ищете меру, используйте этот код ниже:

POM_new = 

var current_id = MIN(your_table[ID])

RETURN
CALCULATE(
    MAX(your_table[POM]),
    FILTER(
        ALL(your_table),
        your_table[ID] = current_id 
        && your_table[TYPE] = "sys"
    )
)

В случае пользовательского столбца попробуйте следующий код:

POM_new_column = 

var current_id = your_table[ID]

RETURN
CALCULATE(
    MAX(your_table[POM]),
    FILTER(
        ALL(your_table),
        your_table[ID] = current_id 
        && your_table[TYPE] = "sys"
    )
)

Это изображение ниже предназначено только для перекрестной проверки. Вы создаете новый столбец, как показано на изображении ниже? Если ответ «да», нет причин для получения проблемы с кодом столбца.

Пользовательский столбец выдает ошибку, например, CALCULATE не является функцией. Не могли бы вы проверить, если что-то не так, я делаю.

kumarb 15.12.2020 08:49

Привет @kumarb, где вы пытаетесь создать столбец. Это должно быть в части отчета, а не в редакторе запросов. Я протестировал здесь оба столбца Measure и Custom и отлично работает для вашего сценария.

mkRabbani 15.12.2020 09:49

Спасибо за ответ. Я использую прямой запрос, и я создал новый столбец, просто щелкнув правой кнопкой мыши имя таблицы, а затем «Новый столбец» на панели «Поля».

kumarb 15.12.2020 10:27

Попробуйте в редакторе отчетов >> щелкните правой кнопкой мыши по таблице >> создайте новую колонку.

mkRabbani 15.12.2020 10:49

Я сделал то же самое. но не в помощь. Мера работает хорошо, но не колонка. Я не уверен, в чем проблема. Calculate совместим с Measure , в этом причина?

kumarb 15.12.2020 16:57

С расчетом проблем нет. Оба работают здесь на меня. Я проверю детали позже.

mkRabbani 15.12.2020 17:53

@kumarb, не могли бы вы проверить мой обновленный ответ?

mkRabbani 17.12.2020 07:00

извините за задержку ответа. Ошибка связана с тем, что я использую режим прямого запроса (в соответствии с рекомендациями компании). В сообщении об ошибке говорится: функция CALCULATE не разрешена как часть выражений DAX вычисляемого столбца в моделях DirectQuery. Я полагаю, вы используете режим импорта, поэтому работаете

kumarb 22.12.2020 07:20

Да, это может быть причиной.

mkRabbani 22.12.2020 08:34

Другие вопросы по теме