有没有办法在kdb中迭代字母表?

mar*_*ari 0 kdb

我正在编写一个函数来选择数据库中以字母"A"开头的所有符号,后跟"B",直到字母"Z".我有一个虚拟表设置3个字符,如下所示...

t:([]symbol:`A`App`B`Bapp`C`Capp; price:104.3 124.3 134.2 103.4 402.7 209.8; ID:1 2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

以及从符号看起来像x的表中选择的函数...

fetch:{[x;y]select from x where symbol like y}
Run Code Online (Sandbox Code Playgroud)

然后我为每个字母调用函数并将其复活到一个新表...

fetchedA:h (`fetch; `t; "A*")
fetchedB:h (`fetch; `t; "B*")
fetchedC:h (`fetch; `t; "C*")
Run Code Online (Sandbox Code Playgroud)

新的空表和upsert函数......

newNormData:([]symbol:`$(); price:`float$(); ID:`int$())
newNorm:{[x] `newNormData upsert x}

h (`newNorm; fetchedA)
h (`newNorm; fetchedB)
h (`newNorm; fetchedC)
Run Code Online (Sandbox Code Playgroud)

我不想为每个服务器进行26次函数调用,而是要进行1次调用,遍历字母表中的每个字符.在kdb/q中执行此操作的正确方法是什么?

Fio*_*gan 5

我相信你在找fetch[t] each .Q.A,'"*".您可以通过运行来执行此操作并将其挂接到新表

h({`newNormData upsert fetch[`t] x;}';.Q.A,'"*")
Run Code Online (Sandbox Code Playgroud)

客户端.

或者,如果您希望插入仅以大写字母开头并按字母顺序排列的符号,则执行起来可能更简单

newNormData:`symbol xasc select from t where symbol like "[A-Z]*"
Run Code Online (Sandbox Code Playgroud)

代替.