Как разделить строку на основе пробелов в построителе выражений DataFlow в конвейере ADF. Строка может содержать 1 или более пробелов.
Eg:
I used split(name,’ ‘) : Thiswill split the word based on single space.Some times it can have more than 1 space. How to handle that?
Joe Smith(1 white space)
Joel Smith(2 white space)
Joplin Smith(3 white space)
@Pratik Lad - я использовал split (name, ''): это разделит слово на основе одного пробела. Иногда в нем может быть более 1 пробела. Как с этим справиться
Это мои образцы данных с пробелами.
column
Steve Smith C S K
Rakesh Govindula Laddu
Chinna R C B
Используйте приведенное ниже выражение, чтобы получить массив слов без пустых строк.
filter(split(column,' '),#item!='')
Поскольку в выражениях потока данных нет функции соединения, чтобы получить строку слов с одним пробелом, используйте приведенное ниже выражение из этого SO Answer от @Jarred Jobe.
dropLeft(toString(reduce(filter(split(column,' '),#item!=''), '', #acc + ' ' + #item, #result)), 0)
Я заметил производную этой проблемы от других языков программирования. Если вы хотите удалить несколько лишних пробелов, вы можете использовать 3 функции Replace() подряд, чтобы заменить их одним пробелом.
Если мы установим параметр «newparam» для вашего примера "Joplin Smith"
, мы можем использовать 3 замены следующим образом:
@replace(replace(replace(pipeline().parameters.newparam, ' ', ' %'), '% ', ''), '%', '')
Вывод после каждой замены:
1 - "value": "Joplin % % %Smith"
2 - "value": "Joplin %Smith"
3 - "value": "Joplin Smith"
На этом этапе вы можете обернуть команду функцией split(), и она будет перехватывать только одиночные пробелы:
@split(replace(replace(replace(pipeline().parameters.newparam, ' ', ' %'), '% ', ''), '%', '')
, ' ')
Производит массив:
"value": [
"Joplin",
"Smith"
]
Не могли бы вы добавить, что вы пробовали и ошибались, если сталкивались с ними?