问题描述
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]
的{{1}}值低于其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
...
但以上方法似乎无效! :(
解决方法
我认为您可以使用类似以下的内容:
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