powerquery - 具有值 (-4.80, 0.70) 的 Table.Column 用作 List 时会引发错误
问题描述
基于这个答案https://stackoverflow.com/a/68625162/16578424我能够清理大量数据。
但是现在我必须修复一个包含一个单元格的列,该单元格的值(-4.80, 0.70)
在我的函数中调用列函数时会返回错误
对我来说,错误消息听起来像是(-4.80, 0.70)
一个包含两列的列表 - 这会引发错误:-/
这就是功能。我将所有内容都注释掉了——并添加了前两行来演示问题。
//fnFixMultipleValuesInCell
//https://stackoverflow.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
我的代码有什么问题吗?我能做的任何事情,将这个函数用于任何类型的列 - 无论数据如何?
解决方案
您是正确的,它将逗号解释为表示额外的列。
如果您查看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
、列列表或 TableType。可选default
的,extraValues
也可以指定。
要解决此问题,请更改Table.FromList(listColumn)
为
Table.FromList(listColumn, Splitter.SplitByNothing())
推荐阅读
- android - 如何在 Firebase 中显示示例(3 和 7)之间的类别?
- postgresql - 当数据库位于同一 postgres 服务器中时,如何查询两个 postgres 数据库(使用单个查询)?
- angularjs - 使用 ngModel 将 AngularJS 指令升级为 Angular 组件
- spring-webflux - 如何使用 Spring Webflux 创建列表流?
- google-play - Google Play 上的应用提供的订阅产品是否可以在任何地方公开显示?
- amazon-web-services - 实施 AWS Lambda 的首选请求处理程序接口
- javascript - 如何通过 jQuery 替换一段字符串?
- r - 在 *for* 函数中,我可以保持堆叠值吗?
- http - LotusScript GetDocumentByURL 未在计划代理中进行身份验证
- c++ - std::optional 是否更改函数的签名?