You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KDB从嵌套表格列表提取deskID并关联对应deskName的实现方法

实现方案

你可以直接用q语言内置的ungroup函数实现,代码非常简洁:

// 输入你的原始表t
t:flip (`tabList`deskName)!((flip (`deskID`bType`ext)!(enlist 653j;enlist `ALL;enlist `30);flip (`deskID`bType`ext)!(592j, 594j, 601j, 603j;`ALL`ALL`ALL`ALL;`40`50`60`70));(`D1;`D2))

// 执行转换即可得到目标结果
res: ungroup select deskID: deskID each tabList, deskName from t

执行后res的结构就和你给出的期望结果完全一致。

如果想要更直观的手动实现逻辑,也可以用逐行遍历的写法:

res: raze {flip (`deskID`deskName)!(x`deskID; count[x`deskID]#y)}'[t`tabList; t`deskName]

逻辑说明

  • ungroup写法的核心逻辑是:先从每行的嵌套子表中提取deskID列表,再把列表类型的deskID列拆分为多行,拆分时自动保留对应行的deskName值,一步完成拼接。
  • 逐行遍历的写法逻辑更易懂:配对遍历每一行的嵌套子表和对应的deskName,为每个子表的deskID生成对应数量的重复deskName,最后把所有子结果合并成一张总表。

内容的提问来源于stack exchange,提问作者pmade1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:09:03