kdb - TorQ:.loader.loadallfiles 和引用完整性导致“强制转换错误”

标签 kdb torq

我有一个表 volatilitysurface 和一个详细表 volatilitysurface_smile 作为详细表的一部分,我定义了主表的外键,即

volatilitysurface::([date:`datetime$(); ccypair:`symbol$()] atm_convention:`symbol$(); ...);
volatilitysurface_smile::([...] volatilitysurface:`volatilitysurface$(); ...);

当我尝试使用AquaQ's TorQ .loader.loadallfiles时加载详细表volatilitysurface_smile我需要作为“dataprocessfunc”函数的一部分来动态构建外键字段,即

rawdatadir:hsym `$("" sv (getenv[`KDBRAWDATA]; "volatilitysurface_smile"));
.loader.loadallfiles[`headers`types`separator`tablename`dbdir`partitioncol`partitiontype`dataprocessfunc!(`x`ccypair...;"ZS...";enlist ",";`volatilitysurface_smile;target;`date;`month;{[p;t] select date,ccypair,volatilitysurface,... from update date:x,volatilitysurface:`volatilitysurface$(x,'ccypair) from t}); rawdatadir];

注意部分:

update date:x,volatilitysurface:`volatilitysurface$(x,'ccypair) from t

转换错误指向volatilitysurface键的构造。但是,这在 .loader.loadallfiles 之外工作,并且表是全局 :: 的,并且在调用 .loader.loadallfiles 函数之前完全定义。

有什么想法可以处理这个用例吗?如果明细表外键未初始化则插入失败。

最佳答案

该错误可能是由于更新的范围造成的。当您在 .loader 命名空间内运行转换/更新时,表名需要是完整范围的(`..volatilitysurface)

例如。 更新日期:x,volatilitysurface:`..volatilitysurface$(x,'ccypair) from t

问候,

斯科特

关于kdb - TorQ:.loader.loadallfiles 和引用完整性导致“强制转换错误”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395333/

相关文章:

kdb - TorQ:如何对具有不同日期范围的单独表使用数据加载器分区?

C 库从 BG 线程调用 kdb 函数

kdb - 在查询中将计数除以计数并更新到新表

kdb - reshape [cols;table]

kdb - 股票行情工厂 pubsub 是否通过 websocket 工作

function - KDB:在两个列表中应用二元函数