Как бороться с несколькими кавычками при загрузке CSV в силовом запросе? - PullRequest
1 голос
/ 31 марта 2020

У меня есть несколько CSV-файлов для объединения в одну таблицу (файлы имеют одинаковую структуру), но структура файлов выглядит достаточно **, чтобы быть проблемной c.

Первая строка обычная, только заголовки, разделенные запятой:

Account, Description, Entity, Risk, ...

, но затем строки с фактическими данными начинаются и заканчиваются двойной кавычкой " , столбцы разделены запятой, но у людей (полное имя) есть две двойные кавычки в начале и в конце. Я понимаю, что это экранирующий символ, чтобы держать имя в одном столбце, но одного будет достаточно.

"1625110, быть выставленным счетом, 587, нормальный", "Доу, Джон" ", ..."

Так что мне нужно делать, и я не знаю, как это сделать удалить "в начале и конце каждой строки с данными и заменить "" на " в каждой строке с данными.

Мне нужно сделать это в Power Query, потому что будет больше подобных файлов CSV со временем и я не хочу чистить их вручную.

Есть идеи?

Я пытался с простым:

= Table.AddColumn(#"Removed Other Columns", "Custom", each Csv.Document(
    [Content],
    [
        Delimiter = ",",
        QuoteStyle = QuoteStyle.Csv
    ]
))

1 Ответ

1 голос
/ 01 апреля 2020

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

Вот как выглядит загрузка одного файла:

let
    Source = Csv.Document(File.Contents("filepath\file.csv"),[Delimiter="#(tab)"]),
    ReplaceQuotes = Table.ReplaceValue(Source,"""""","""",Replacer.ReplaceText,{"Column1"}),
    SplitIntoColumns = Table.SplitColumn(ReplaceQuotes, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv)),
    #"Promoted Headers" = Table.PromoteHeaders(SplitIntoColumns, [PromoteAllScalars=true])
in
    #"Promoted Headers"

Я использовал разделитель табуляции, чтобы предотвратить его разделение на первом шаге.

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