kdb - 将迭代函数的输出存储到唯一表 KDB+/Q
问题描述
我有一个格式的查询功能:
function:{[x] select Y from table1 where date=x}
我想在存储在一个单独的表中的所有日子里迭代这个函数,就像这样
function each (select distinct date from table2)
并将每次迭代存储到它自己的唯一表中。例如,如果第一次迭代是针对 2021.11.10,则该日期 table1 中的所有“Y”值都存储在名为“a”的表中,对于日期 2021.11.12 的下一次迭代,它将转到名为“ b',或类似的东西。我怎样才能做到这一点?
解决方案
假设以下表格:
q)t1:([]date:.z.d + 0 0 0 1 1 1;a:1 2 3 4 5 6)
q)t2:([]date:.z.d+0 1)
那么您可以执行以下操作:
q)function:{[x;y] x set select from t1 where date=y}
q)function'[`a`b;exec distinct date from t2]
`a`b
q)show a
date a
------------
2021.11.10 1
2021.11.10 2
2021.11.10 3
q)show b
date a
------------
2021.11.11 4
2021.11.11 5
2021.11.11 6
如果您想让它更有活力,那么您还可以执行以下操作:
q)function:{[x] (`$"tab",string[x] except ".") set select from t1 where date=x}
q)
q)
q)function each exec distinct date from t2
`tab20211110`tab20211111
q)show tab20211110
date a
------------
2021.11.10 1
2021.11.10 2
2021.11.10 3
q)show tab20211111
date a
------------
2021.11.11 4
2021.11.11 5
2021.11.11 6
上面创建了为每个日期命名的新表(我们从结果名称中删除了“.”,因为它们可能与 q 的.
运算符混淆)
推荐阅读
- javascript - 数组名实例数组;没有按预期工作
- makefile - Makefile:为每个以 .abc 结尾的文件执行一个操作以创建目标 .xyz
- php - 如何制作这样的节点
使用 php xmlwriter - python - 找到第 100 个卢卡斯数
- python - 在 tfp 中训练变分贝叶斯神经网络时,如何分别可视化损失中不同项的演变?
- google-app-engine - 在 GAE 中使用自定义域规范化静态站点的 URL
- python - ModuleNotFoundError:'script-name.py' 从另一个调用脚本时
- electron - 电子全屏 - 当屏幕键盘隐藏在 MS Surface 上时,部分屏幕“丢失”
- r - 如何在R中以每年正确的月份顺序重新排列绘图条形图xaxis?
- r - 尝试在 R 中重新排列表格。(我是初学者!)是否有某种“转置”功能?