轻松修复
在过滤器之前的步骤中,选择“删除空值”或“用值替换空值”
使用catch
如果您想要更大的灵活性,可以使用try + catch 对。
步骤FirstTry 的意思是;成为您的过滤器,然后我添加了两种处理错误的方法。
let
Source = Table.FromList(sample, Splitter.SplitByNothing(),
type table[Date = nullable date], null, ExtraValues.Error),
sample = {
#date(2020, 1, 1),
"text", null,
#date(2024, 1, 1)
},
filter = #date(2022, 1, 1),
FirstTry = Table.AddColumn(
Source , "Comparison", each filter > [Date], Logical.Type),
WithFallback = Table.AddColumn(FirstTry, "WithFallback",
each try
filter > [Date]
catch (e) => e[Message], type text),
WithPreservedDatatype = Table.AddColumn(WithFallback, "PreserveColumnType",
each try
filter > [Date]
catch (e) => null meta [ Reason = e[Message] ],
type logical)
in
WithPreservedDatatype
注意事项
- 查询步骤“乱序”,完全有效。 (上面的
sample 在它的行“之前”被引用)
-
Errors are propagated 所以第 4 步的错误实际上可能是第 2 步。一直往上走,直到找到为止。
-
schema 表示列[Date] 是date 类型——但它实际上是type any。
您需要拨打Table.TransformColumnTypes转换和断言数据类型
= Table.TransformColumnTypes( Source,{{"Date", type date}})
现在行2 将正确显示错误,因为text 无法转换为date