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

比较kdb中两个不同表中的数据,kdb,Kdb,我想比较同一个表的两个不同实例的数据。 我认为我可以比较表中的空值,但是,我不确定如何将其推广到所有表 例如: 这是我的表格: a:([]a:0n 2 3;b:"a", " ","c") 我尝试使用以下代码计算所有列的空值: {count where (null a[x]) =1b} each cols a 我怎样才能用它来概括所有的表呢?并使用代码与远程表进行比较 h: hopen `:2001 比较来自远程表的数据可能非常棘手,这将取决于许多因素,如表大小、表是否分区等 假设表在内

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

例如: 这是我的表格:

a:([]a:0n 2 3;b:"a", " ","c")
我尝试使用以下代码计算所有列的空值:

{count where (null a[x]) =1b} each  cols a 
我怎样才能用它来概括所有的表呢?并使用代码与远程表进行比较

h: hopen `:2001

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

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

/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

这只会确认模式是相同的,而不是表中的值是相同的
f
将不适用于键控表,可以修改为
值0!t
来绕开它。感谢@thomassystry的输入,更新了代码。我们将在下周一查看。谢谢