为什么我在尝试.Q.dpft时会出现排名错误?

时间:2018-04-18 10:58:24

标签: kdb

我创建了一个新的仅限HDB的kdb,并且有一个用于填充表中数据的脚本。

func{[]
     var1:<some logic that calls other functions and brings back results>;
     var2:<same as above>;
     saveToDB[var1;var2];
  };

saveToDB{[var1;var2]

        path:`$":/path/to/db";
        tableName1:var1;
        tableName2:var2;

        show "saving table1";
        .Q.dpft[path;.z.d;`sym;`tableName1];
        show "saving table2";
        .Q.dpft[path;.z.d;`sym;`tableName2]; 
  };

我在这里做错了什么?我确实看到日志中的第一个显示字符串,然后它出错了。 我确实得到了变量var1和var2的结果。我叫func []。

P.S我尝试制作tableName1和tableName2全局,但仍然有同样的问题。

欣赏任何指针。谢谢!

1 个答案:

答案 0 :(得分:0)

我还建议运行该函数并在saveToDB的开头添加一个break,看看var1var2的样子。这可能是由表格格式引起的问题。您还可以通过包含此行来检查saveToDB函数开头的内容。

if[any 98<>type each(var1;var2);:-1"ERROR: not tables"];

如果表格正常,请尝试替换

tableName1:var1;
tableName2:var2;

`tableName1 set var1;
`tableName2 set var2;

[...other code...]
delete tableName1,tableName2 from `.;         

如果您使用日志,我还建议使用-1而不是show,因为通常的做法是从命令行重定向输出。

您还可以选择另一种保存表格的方法。例如,使用.Q.en枚举列(如果需要)并使用.Q.par将表保存为splayed表。