比较kdb中两个不同表中的数据

Compare data in two different tables in kdb

我想比较同一 table 的两个不同实例的数据。 我想我可以比较 table 中的空值,但是,我不确定如何将其推广到所有 table。

例如: 这是 table 我有:

a:([]a:0n 2 3;b:"a", " ","c")

我正在尝试使用以下代码计算所有列的空值:

{count where (null a[x]) =1b} each  cols a 

我如何使用它来概括所有 tables?并使用代码与远程 tables?

进行比较
h: hopen `:2001

比较来自远程 table 的数据可能非常棘手,这将取决于许多因素,例如 table 大小、table 是否已分区等。

假设 table 在内存中并且您使用空检查作为 table 签名,您可以在远程会话上执行此操作,然后将其与本地实例进行比较。

/Remote service - port 2001
q)table1:([]col1:0n 2 3 0n ;col2:"a", " ","ca")
q)table2:([]col3:1 2 0n 4 ;col4:```b`)

/local
q)table1:([]col1:0n 2 3 0n ;col2:"a", " ","ca")
q)table2:([]col3:1 2 0n 4 ;col4:```b`d)   //different from remote
q)table3:([]col5:1 2 0n 4 ;col6:```b`d)    //local table

q)f: { tables[]!{[t] (), {sum null x} each flip 0!value t}each tables[]}  //tables unkeyed

q)remote:`::2001(f;::)
q)remote 
(`s#`table1`table2)!((`col1`col2)!2 1;(`col3`col4)!1 3)

q)local:f[]
q)local
(`s#`table1`table2`table3)!((`col1`col2)!2 1;(`col3`col4)!1 2;(`col5`col6)!1 2)

q)remote~'local   //only table1 signature matches
(`table1`table2`table3)!100b