Power Query - найти разделить и удалить - PullRequest
1 голос
/ 01 октября 2019

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

  1. Проверьте, есть ли в нем специальные символы, если да, то разбейте и удалите начальные нули из второй части текста и верните вторую часть(без начальных нулей).

  2. Если нет специальных символов, удалите начальные нули и верните текст

Я сделал это в Excel с помощью поиска ифункции замены, но я хочу выполнить ту же операцию в Power BI Power Query Editor.

enter image description here

Ответы [ 2 ]

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

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

=Text.TrimStart([Column1], "0")

В редакторе запросов в разделе Transform > Split Column > By Delimiter вы можете разделить столбец разделителем и несколькими дополнительными настройками. В вашем случае вы можете сделать это несколько раз с разными разделителями. Вы также можете выбрать, какая часть вам нужна, а какую - удалить.

Вы также можете комбинировать оба действия несколько раз.

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

Это возможно, используя Text.PositionOfAny , Text.Range и переменные. Вам нужно создать новый вычисляемый столбец со следующим кодом:

Итак, len, position_special, position_n являются переменными

len - получает длину текста для получения более поздней подстроки

position_special = Text.PositionOfAny([Column1], {"-", "_"}, Occurrence.Last)

Ищет "-" или "_" в столбце, если его там нет, он вернет -1. Вы можете проверить это в своем собственном пользовательском столбце.

position_n = position_special + 1

Просто добавляет 1 к строке для начальной позиции

return_value = if position_special <> -1 then Text.Range([Column1], position_n , (len - position_n)) else Text.TrimStart([Column1], "0")

Этот раздел является разделом IF / THEN / ELSE, поэтомуон проверяет, имеет ли он специальный символ, не равный -1, затем получит текст в диапазоне, если нет, он должен найти обрезание лидирующей «0». Полный код вычисляемого столбца:

let
len = Text.Length([Column1]),
position_special = Text.PositionOfAny([Column1], {"-", "_"}, Occurrence.Last),
position_n = position_special + 1,
return_value = if position_special <> -1 then Text.Range([Column1], position_n , (len - position_n)) else Text.TrimStart([Column1], "0")  
in  
return_value

enter image description here

Надеюсь, это поможет. Может потребоваться перебор, но он должен получить то, что вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...