如何在运行函数时跳过kdb中的错误?

  • 本文关键字:kdb 错误 运行 函数 kdb
  • 更新时间 :
  • 英文 :

func:raze {select compTypeOrigin from .get.order[2021.10.01;string x]}
list:(``abc`def`ggh``eef)

当我运行这个函数时,它工作了

raze {select compTypeOrigin from .get.order[2021.10.01;string x]} `abc

但是当它为空(')时,我得到了类型错误,可能是由于函数。get.order

我试图用受保护的求值运行函数

@[func;each list[0 + til 6];show]

但它不起作用如何跳过错误?

我认为您需要将每个(')带到受保护的评估之外。试试这个语法:

q)f:{x*x}
q)list:(1;`a;3)
q)@'[f;list;{x}]
1
"type"
9

func目前不是一个函数,而是一个混合列表。raze应置于函数内,使其成为函数。

Error trap只捕获函数执行过程中的错误。在您的情况下,错误是在each list[0 + til 6]期间设置参数期间预先抛出的。抛出错误的原因是each需要两个参数(一个操作符和参数),而只提供了一个。

/ func is currently not a function, but a mixed list
q)type func
0h
/ put the raze inside the lambda
func:{raze select compTypeOrigin from .get.order[2021.10.01;string x]}
/ type now 100h (lambda)
q)type func
100h
/ move the each outside
@[func;;show] each list[0 + til 6]

最新更新