我有一个表 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/