kdb - 如何在 kdb 中使用类型“c”和“C”
问题描述
当我用来meta tableName
检查类型时,得到以下结果:
c t f a
`description "C"
现在我想知道 type"c"
和"C"
. 以及如何将类型"c"
转换为"C"
.
从下面的解释中我可以知道,当表中有“c”类型时,我可以将其转换为“C”类型。我的新问题如下:table1:
([ID:`1`2`3]Name:`A`B`C;Client:`P`Q`S;Species:`setosa`setosa`setosa ;Length:2 34 6)
显示如下:
ID Name Client Species Length
1 A B setosa 2
2 B Q setosa 34
3 C S setosa 6
我想为table1写一个简单的api:
.get.table1:{[Params]
if[Params~();Params:()!()];
select ID:ID,NAME:Name,CLIENT:Client,SPECIES:Species,LENGTH:Length,DESCRIP:count[i]#enlist "" from table1
}
结果:.get.table1[]
ID NAME CLIENT SPECIES LENGTH DESCRIP
1 A B setosa 2 ""
2 B Q setosa 34 ""
3 C S setosa 6 ""
元表1:
c t f a
ID s
NAME s
CLIENT s
LENGTH j
DESCRIP C
现在,我想改变一个 api 的写作风格,以获得与上面的 api 相同的结果。我该怎么办?(如何描述 DESCRIP 行)
.get.table1:{[Params]
if[Params~();Params:()!()];
defaultCols:`ID`NAME`CLIENT`SPECIES`LENGTH`DESCRIP!(`ID;`Name;`Client;`Species`;`Length;**DESCRIP**)
if[`extraCols in key Params;
extraCols:$[-11h=type Params`extraCols;enlist[Params`extraCols]!enlist
Params`extraCols;(Params`extraCols)!Params`extraCols];
defaultCols:defaultCols,extraCols];
?[select from table1;();0b;defaultCols]
}
解决方案
类型“c”表示列中的每个元素都是原子的,而类型“C”表示列中的每个元素都是该类型的列表。要将“c”转换为“C”,您可以将每个字符加入到列表中。
q) meta ([] c:"123")
c| t f a
-| -----
c| c
q) meta ([] c:enlist each "123")
c| t f a
-| -----
c| C
查询字符串列将是低效的。如果您的列有一组经常重复的不同值,则将该列转换为符号列会更有效
推荐阅读
- r - 在 R 中提取相应的值
- python-3.x - 我在哪里可以获得有关 AWS 用户所做操作的活动日志
- python - 从函数内部创建的对象模拟方法调用(python)
- angular - 如何从“开始”停止 Ionic 4 App 直到它获得所有需要的数据
- hadoop - Hadoop start-all.sh 错误
- r - 如何重命名具有相同名称的列以使其不同?
- javascript - Javascript 记录敏感数据
- javascript - 清除自定义过滤器但无法重绘数据表
- email - 如何编辑 woocommerce 收据以包含全名
- angular - 在销毁时清除 ViewChildren 订阅