首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TorQ:如何对具有不同日期范围的单独表使用dataloader分区?

TorQ:如何对具有不同日期范围的单独表使用dataloader分区?
EN

Stack Overflow用户
提问于 2017-12-14 13:29:26
回答 1查看 189关注 0票数 2

我正在尝试使用AquaQ的TorQ来填充一个价格和报价数据库。为此,我使用.loader.loadallfiles函数。区别在于,prices是每日数据,而quotes是日内数据,例如外汇利率。

我的装货方式如下:

代码语言:javascript
复制
/- check the location of database directory
hdbdir:hsym `$getenv[`KDBHDB]
/hdbdir:@[value;`hdbdir;`:hdb]
rawdatadir:hsym `$getenv[`KDBRAWDATA]

target:hdbdir;

rawdatadir:hsym `$("" sv (getenv[`KDBRAWDATA]; "prices"));
.loader.loadallfiles[`headers`types`separator`tablename`dbdir`partitioncol`partitiontype`dataprocessfunc!(`date`sym`open`close`low`high`volume;"DSFFFFF";enlist ",";`prices;target;`date;`year;{[p;t] `date`sym`open`close`low`high`volume xcols update volume:"i"$volume from t}); rawdatadir];

rawdatadir:hsym `$("" sv (getenv[`KDBRAWDATA]; "quotes"));
.loader.loadallfiles[`headers`types`separator`tablename`dbdir`partitioncol`partitiontype`dataprocessfunc!(`date`sym`bid`ask;"ZSFF";enlist ",";`quotes;target;`date;`year;{[p;t] `date`sym`bid`ask`mid xcols update mid:(bid+ask)%2.0 from t}); rawdatadir];

这个很好用。但是,在加载数据库时,尝试从任何一个表中进行选择都会出现错误。原因是对于某些分区,没有任何prices或或没有任何quotes数据。例如试图:

代码语言:javascript
复制
quotes::`date`sym xkey select from quotes;  

如果说年份的分区失败,例如hdb/2000/不存在,这是正确的,2000年只有prices,没有quotes

据我所见,有两种可能的解决方案,但我都不知道如何实现:

  1. 告诉.loader.loadallfiles为没有任何数据的分区中的报价和价格创建空模式。
  2. 在加载数据库时,优雅地处理给定分区(即select from ... where ignore empty partitions )没有数据的情况
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 14:19:32

尝试使用.Q.chk[`:hdb]

其中`:hdb是您的HDB文件

这将填充缺少的表,然后允许您预置查询。

或者,您可以使用.Q.bv,其中wiki声明:

如果您的表存在于最新的分区中(因此有一个模式的原型),那么您可以使用.Q.bv[]在运行时动态创建空表,而不必在磁盘上创建这些空表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47814538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档