Table.Column со значением (-4,80, 0,70) выдает ошибку при использовании в качестве списка

avatar
Ike
8 августа 2021 в 18:38
38
1
0

Основываясь на этом ответе https://coderhelper.com/a/68625162/16578424, я могу очистить много данных.

Но теперь мне нужно исправить столбец, содержащий ячейку со значением (-4.80, 0.70), которая возвращает ошибку при вызове функции столбца в моей функции Source table and result

Для меня сообщение об ошибке звучит так, будто (-4.80, 0.70) читается как список с двумя столбцами, и это выдает ошибку :-/

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

//fnFixMultipleValuesInCell
//https://coderhelper.com/a/68625162/1657842
let
    fnFixMultipleValuesInCell = (Source as table, columnName as text, columnIndex as number) as table =>
    let

        listColumn = Table.Column(Source, columnName), //same result for  listColumn = Source[Column2]
        Result = Table.FromList(listColumn)   /*,
        

        addIndex = Table.AddIndexColumn(Source, "Index",0),
        replaceNull = Table.ReplaceValue(addIndex,null,"",Replacer.ReplaceValue,{columnName}),

        splitMergedCells = List.Select(List.Combine(List.Transform( Table.Column(replaceNull, columnName), each Text.Split(_, "#(lf)"))), each Text.Length(_) > 0 ),
        
        insertColumn = Table.AddColumn(replaceNull, "new", each splitMergedCells{[Index]}) ,

        removeOldColumn = Table.RemoveColumns(insertColumn,{columnName, "Index"}),
        renameColumn = Table.RenameColumns(removeOldColumn,{{"new",columnName}}),
        ColumnNames = Table.ColumnNames(renameColumn),
        newColumnNamesList = List.RemoveLastN( List.Combine({List.FirstN(ColumnNames, columnIndex-2), List.LastN(ColumnNames,1), List.LastN(ColumnNames, List.Count(ColumnNames)-columnIndex+1 ) } ),1),
        Result = Table.ReorderColumns(renameColumn, newColumnNamesList) */

    in
        Result
in fnFixMultipleValuesInCell

Что-то не так с моим кодом? Что я могу сделать, чтобы использовать эту функцию для столбца любого типа - независимо от данных?

Источник
Ron Rosenfeld
9 августа 2021 в 00:07
0

Почему у вас есть код в виде скриншота? Почему бы не опубликовать его в виде текста, чтобы людям было проще вам помочь?

Ike
9 августа 2021 в 06:45
0

Извините, вы правы - я изменил код.

Ответы (1)

avatar
Alexis Olson
9 августа 2021 в 19:41
1

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

Если вы посмотрите документацию для Table.FromList, вы увидите следующее:

Table.FromList(list as list, optional splitter as nullable function, optional columns as any, optional default as any, optional extraValues as nullable number) as table

Преобразует список list в таблицу, применяя дополнительную функцию разделения splitter к каждому элементу в списке. По умолчанию предполагается, что список представляет собой список текстовых значений, разделенных запятыми. Необязательными столбцами может быть количество columns, список столбцов или тип таблицы . Также можно указать необязательные default и extraValues.

Чтобы исправить это, измените Table.FromList(listColumn) на

Table.FromList(listColumn, Splitter.SplitByNothing())
Ike
10 августа 2021 в 05:38
0

Большое спасибо! Честно говоря, я не читал документацию. Но теперь ясно. Зная это, мне придется просмотреть весь код.