kdb - 在 kdb 中的表内查询表
问题描述
q
凡人同胞!
我在 kdbq+ 中遇到了一个非常不寻常的问题。本质上,我有一个包含一列表格的表格。
下面是名为full_tab
time bmm $
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------$
2020.08.12D00:06:12.049002000 +`offerid`source_id`sub1`impc`question_id`offer`total_click`rpc`revenue`rpm!(789 128 3 149 111 523 1037 852f;70995 70995 70995 70995 70995 70995 70995 70995f;31 31 31 31 31 31 31 31f;1 2 21 1 0N 0N 0N 0N;956 6$
2020.08.12D00:10:48.186445000 +`offerid`source_id`sub1`impc`question_id`offer`total_click`rpc`revenue`rpm!(789 128 3 149 111 523 1037 852f;70995 70995 70995 70995 70995 70995 70995 70995f;31 31 31 31 31 31 31 31f;3 7 55 5 0N 0N 0N 0N;956 6$
2020.08.12D00:15:50.596247000 +`offerid`source_id`sub1`impc`question_id`offer`total_click`rpc`revenue`rpm!(789 128 3 149 111 523 1037 852f;70995 70995 70995 70995 70995 70995 70995 70995f;31 31 31 31 31 31 31 31f;4 10 81 5 0N 0N 0N 0N;956 $
...
列中的每一行bmm
都是一个如下所示的表格
offerid source_id sub1 impc question_id offer total_click rpc revenue rpm
---------------------------------------------------------------------------------------------------------------------------
789 70995 31 1 956 "aaaa" 1 0 0 0
128 70995 31 2 698 "bbb" 2 0.4 0.8 400
3 70995 31 21 818 "ccc" 10 1.0575 10.575 503.5714
149 70995 31 1 941 "ddd" 1 0.4 0.4 400
111 70995 31 "eee" 10 1.057 10.575
523 70995 31 "fff" 1 0.4 0.4
1037 70995 31 "ggg" 1 0.4 0.4
852 70995 31 "hhh" 1 0.4 0.4
我想要的是一个如下所示的决赛桌。从full_tab
我正在尝试提取time
列并从相应的bmm
行中提取与bmm[;`rpm]
特定相对应的值bmm[;`question_id]
,对于它下面的情况question_id = 818
time q818
---------------------------------------------
2020.08.12D00:06:12.049002000 503.5714
2020.08.12D00:10:48.186445000 510.665
2020.08.12D00:15:50.596247000 533.445
...
我试图使用下面的语句来拉
select time, q818: first each bmm[;`rpm][;(where each bmm[;`question_id]=818)] from full_tab;
但以上似乎不起作用!:(
解决方案
我认为您可以使用以下内容:
q)getQID:{[t;qid] select time,q818:{[t;qid]exec rpm from t where question_id=qid}[;qid]'[bbm] from t}
q)getQID[full_tab;818]
time q818
-------------------------------------
2014.08.30D03:40:50.876084992 503.75
2008.06.26D08:14:03.717355744 510.665
推荐阅读
- python - 谁能推荐如何解决这个错误?
- python - XGBoost 损失不随 HyperOpt 改变
- python - 从 Python 客户端发送的 GRPC 请求没有被 Golang 服务器正确接收
- sonarqube - 声纳扫描仪可以只扫描`git ls-files`中的文件吗?
- javascript - js 日志绑定对象
- merge - TFS/Azure 分支和合并策略
- c++ - 在使用 Xcode 13 在 iOS 15 上编译 Cronet 时,shrink_to_fit() 的“未定义符号”
- javascript - Bootstrap 4.6 工具提示未显示在动态生成的模式内容中
- graphics - 为什么即使灯光剪辑空间和相机剪辑空间的变换相同,也会出现自阴影混叠?
- ios - UIAccessibility 专注于自定义 UIWindow