在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]的{​​{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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...