gpt4 book ai didi

kdb - 选择 q kdb 中带有后缀 _test 的所有列

转载 作者:行者123 更新时间:2023-12-02 19:53:39 25 4
gpt4 key购买 nike

我有一个分区表,类似于下表:

q)t:([]date:3#2019.01.01; a:1 2 3; a_test:2 3 4; b_test:3 4 5; c: 6 7 8);

date a a_test b_test c
----------------------------
2019.01.01 1 2 3 6
2019.01.01 2 3 4 7
2019.01.01 3 4 5 8

现在,我想从表 t 中获取日期列,并且所有列的名称都带有后缀“_test”。
预期输出:

date       a_test b_test
------------------------
2019.01.01 2 3
2019.01.01 3 4
2019.01.01 4 5

在我的原始表中,有超过 100 个名称为 _test 的列,因此在这种情况下,下面的解决方案不是实际的解决方案。

q)select date, a_test, b_test from t where date=2019.01.01

我尝试了如下各种选项,但没有用:

q)delete all except date, *_test from select from t where date=2019.01.01

最佳答案

如果您选择的列是可变的,那么您应该使用 functional qSQL语句来执行查询。以下内容可用于您的情况

q)query:{[tab;dt;c]?[tab;enlist (=;`date;dt);0b;(`date,c)!`date,c]}
q)query[t;2019.01.01;cols[t] where cols[t] like "*_*"]
date a_test b_test
------------------------
2019.01.01 2 3
2019.01.01 3 4
2019.01.01 4 5

为了制作特定的功能语句,您可以解析您的查询,如果您不确定它们应该是什么,则将虚拟列放在适当的位置

q)parse "select date,c1,c2 from tab where date=dt"
?
`tab
,,(=;`date;`dt)
0b
`date`c1`c2!`date`c1`c2

关于kdb - 选择 q kdb 中带有后缀 _test 的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57556202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com