PowerQuery中如何创建带条件的Table.TransformColumnType列类型转换逻辑
你原有代码的问题在于try和otherwise分支执行的是完全相同的逻辑,等于没有做错误处理;且批量调用Table.TransformColumnTypes处理多列时,只要任意一列转换抛出错误,整段操作都会直接失败,无法单独保留转换失败列的原始文本类型。
你可以通过List.Accumulate逐列处理转换逻辑,每一列单独做错误捕获,转换成功就更新为数值类型,失败就保留该列的原始类型:
#"Changed Type" = List.Accumulate( sTranCol, CombineTables, (state as table, colName as text) as table => let tryConvert = try Table.TransformColumnTypes(state, {{colName, type number}}) in if tryConvert[HasError] then state else tryConvert[Value] )
上述逻辑会保留单元格层面的转换错误值,符合你不介意单元格返回错误的需求。如果后续转置操作会因为单元格错误中止,可以在转换完成后新增一步统一将错误值替换为null:
#"Replace Errors" = Table.ReplaceErrorValues(#"Changed Type", List.Transform(sTranCol, each {_, null}))
内容的提问来源于stack exchange,提问作者SJE
相关产品推荐
相关产品推荐

