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

KDB/Q如何转置含多个键的表?求通用解决方案

KDB/Q 转置含多键表的通用解决方案

核心思路

利用pivot函数实现多键表转置:先将多键组合转换为唯一列名,再把原数值列转为行,最终得到目标格式。

步骤与示例

假设已有示例表t(结构与提问中的表一致),具体操作如下:

1. 构造示例表

t:([] x:`today`yesterday`today`yesterday`today`yesterday; 
   y:`setting1`setting1`setting2`setting2`setting1`setting1; 
   z:`model1`model1`model1`model1`model2`model2; 
   ltCt:41.66 -1570.33 41.66 -1570.33 41.66 -1570.33; 
   poPt:367.69 77233.76 367.69 77233.76 367.69 77233.76; 
   kgAg:-662.89 -1169.33 -662.89 -1169.33 -662.89 -1169.33; 
   xoOt:11347.91 11267.63 11347.91 11267.63 11347.91 11267.63; 
   woWa:30644 17079 30644 17079 30644 17079; 
   yTri:-177 5623 -177 5623 -177 5623; 
   zapR:19149.92 31069.08 19149.92 31069.08 19149.92 31069.08)

2. 定义关键列

keyCols:`x`y`z    // 多键列
valCols:`ltCt`poPt`kgAg`xoOt`woWa`yTri`zapR  // 需要转置的数值列

3. 生成自定义列名(匹配理想输出格式)

将多键的取值拼接为首字母大写的字符串:

// 将键组合元组转换为拼接字符串
formatKey:{raze {upper first x, 1_x} each string each x}
newColNames:formatKey each exec distinct flip keyCols from t

4. 转置并调整结构

用pivot生成宽表,再重命名列:

// 生成转置后的基础表
result:pivot[t;keyCols;valCols]

// 重命名列,适配目标格式
result:rename `data!valCols, (newColNames)!key[1_ key result]

最终输出

执行后result的结构与理想输出一致:

data          TodaySetting1Model1 YesterdaySetting1Model1 TodaySetting2Model1 ...
---------------------------------------------------------------------------------
ltCt          41.66               -1570.33                41.66
poPt          367.69              77233.76                367.69
kgAg          -662.89             -1169.33                -662.89
xoOt          11347.91            11267.63                11347.91
woWa          30644               17079                   30644
yTri          -177                5623                    -177
zapR          19149.92            31069.08                19149.92

通用适配说明

  • 无论键列数量多少,只需修改keyCols参数,formatKey函数会自动处理任意数量的键拼接。
  • 若需调整列名格式(如用下划线分隔),修改formatKey函数即可,例如:
    formatKey:{raze "_" join string each x}  // 下划线分隔格式
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:27:09