Страницы: 1
RSS
Power Query разбитие по столбцам через разделитель, когда их разное количество в строках
 
Друзья, здравствуйте!
Считываю тектовый файл в список. В каждой строке списка есть символ "|", по которому в последствии этот список разделяется на столбцы.
Их всегда 10, но бывает закрадывается 11-ый.
Какое решение вижу с высоты скудного знания PQ: В отдельный столбец вывожу число вхождений символа и если их 11, в этой строке хочу удалить четвертое вхождение этого символа.
Подскажите, пожалуйста, как удалить n-ое вхождение некоего символа, в моем случае "|". (вторая строка в приложенном файле, в номере договора указана вертикальная черта)
Или если для это применяется другое решение, то подскажите его. Но и по вопросу удаления именно четвертой вертикальной черты тоже подскажите, интересно, как это решается :)

Спасибо.
Изменено: whateverlover - 04.08.2022 16:29:33
 
Почти кнопочный вариант
Код
let
    Source = Csv.Document(File.Contents("C:\Users\user\Downloads\Выписка (1).txt"),[Delimiter=",", Columns=1, Encoding=1251, QuoteStyle=QuoteStyle.None]),

    count = Table.AddColumn(Source, "Счет", (x)=>  List.Count(Text.PositionOf(x[Column1],"|",Occurrence.All ))),

    #"Inserted Text Before Delimiter" = Table.AddColumn(count, "Текст перед разделителем", each Text.BeforeDelimiter([Column1], "|", 3), type text),
    #"Inserted Text After Delimiter" = Table.AddColumn(#"Inserted Text Before Delimiter", "Текст после разделителя", each Text.AfterDelimiter([Column1], "|", 3), type text),
    #"Added Conditional Column" = Table.AddColumn(#"Inserted Text After Delimiter", "Итог", each if [Счет] = 9 then [Column1] else [Текст перед разделителем]&[Текст после разделителя], type text),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Conditional Column",{"Итог"})
in
    #"Removed Other Columns"
 
Xel, спасибо, работает)
Если кому не лень, можете показать крутые варианты, типа, без доп. столбцов или еще как-то по-хитрому) нравится учиться на примерах здешних мастеров  8)
 
Перешла на стадию лезть поперек мастеров со своими рисунками и поросячьим визгом
Вот такое еще нарисовалось.
Не поняла, насколько я четвертое вхождение черточки извращенно ищу. Но раз находится...

Код
let
    Source = Csv.Document(File.Contents("C:\Users\user\Downloads\Выписка (1).txt"),[Delimiter=",", Columns=1, Encoding=1251, QuoteStyle=QuoteStyle.None])[Column1],

    res = List.Transform  (Source, (x)=>  if List.Count(Text.PositionOf(x,"|",Occurrence.All )) = 9 then x else  Text.RemoveRange(x, Text.PositionOf(x, "|",4){3}) )
   
in
    res
Изменено: Xel - 04.08.2022 17:06:12
 
Xel, ай, как красиво :oops: одной строчечкой и в том же столбце
Спасибо огромное)
Изменено: whateverlover - 04.08.2022 17:33:55
Страницы: 1
Наверх