在kdb中查询表内的表

在kdb中查询表内的表,kdb,Kdb,同道q凡人 我在kdbq+中遇到了一个非常不寻常的问题。基本上我有一个表,它有一列表 下面是名为full_tab time bmm

同道
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_选项卡
中,我试图提取
time
列,并从相应的
bmm
行中提取
bmm[;`rpm]
值,该值对应于特定的
bmm[;`question_id]
,用于
问题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

我认为您可以使用以下内容:

    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