kdb q 如何识别并连接具有相同ID的数据行

问题描述 投票:0回答:1

我需要找到一种方法来匹配和组合相似的行,其中不同列的 ID 相匹配。

这就是我的桌子的样子:

第一ID 第二ID 更多数据
123ABC 456防御 ...
456防御 789GHI ...
349UYH 286IWD ...

我正在尝试查找 FirstID 和 SecondID 匹配的行。

例如,第 1 行的 SecondID (456DEF) 和第 2 行的 FirstID 相同,因此它们是相连的。

我的计划是制作第三列来连接这两行,最终输出如下:

来源ID 第一ID 第二ID 更多数据
123ABC 123ABC 456防御 ...
123ABC 456防御 789GHI ...
349UYH 349UYH 286IWD ...

在上表中,Source ID 列中前两行的值为 123ABC,因为第一行的 FirstID 未连接到另一行的 SecondID,而第二行则连接到。对于第二行,我们找到未连接的原始 FirstID,并使用该值作为源 ID。

让我知道这是否有意义!

我的伪代码如下:

if (SecondID is found in FirstID):

    x: FirstID where SecondID = this row's FirstID

    update SourceID: x

else: SourceID: this row's FirstID

kdb
1个回答
0
投票

如果您将来提供意见将会很有帮助。 你可以做这样的事情:

q)input:([] FirstID:`123ABC`456DEF`349UYH; SecondID:`456DEF`789GHI`286IWD)
q)input
FirstID SecondID
----------------
123ABC  456DEF
456DEF  789GHI
349UYH  286IWD
q)update SourceId:FirstID^(input[`SecondID]!input`FirstID)FirstID from input
FirstID SecondID SourceId
-------------------------
123ABC  456DEF   123ABC
456DEF  789GHI   123ABC
349UYH  286IWD   349UYH
© www.soinside.com 2019 - 2024. All rights reserved.