kdb - KDB+ 中具有多个值列的数据透视表
问题描述
我想转换以下生成的两行表:
tb: ([] time: 2010.01.01 2010.01.01; side:`Buy`Sell; price:100 101; size:30 50)
time side price size
--------------------------------
2010.01.01 Buy 100 30
2010.01.01 Sell 101 50
到下表单行:
tb1: ([] enlist time: 2010.01.01; enlist price_buy:100; enlist price_sell:101; enlist size_buy:30; enlist size_sell:50)
time price_buy price_sell size_buy size_sell
-----------------------------------------------------
2010.01.01 100 101 30 50
实现这一目标的最有效方法是什么?
解决方案
(select price_buy:price, size_buy:size by time from tb where side = `Buy) lj select price_sell:price, size_sell:size by time from tb where side = `Sell
time | price_buy size_buy price_sell size_sell
----------| ---------------------------------------
2010.01.01| 100 30 101 50
如果您想避免 2 个选择语句:
raze each select `price_buy`price_sell!(side!price)@/:`Buy`Sell, `size_buy`size_sell!(side!size)@/:`Buy`Sell by time from tb
作为附加说明,将日期列标记为时间可能会产生误导。kdb 中的典型财务表具有以下格式date time sym etc
编辑:动态列生成的功能形式:
{x[0] lj x[1]}[{?[`tb;enlist (=;`side;enlist `$x);(enlist `time)!enlist `time;(`$("price",x;"size",x))!(`price;`size)]} each ("Sell";"Buy")]
time | priceSell sizeSell priceBuy sizeBuy
----------| -----------------------------------
2010.01.01| 101 50 100 30
推荐阅读
- java - 用户 UID 与 Firestore Android 中的文档 ID 不同
- google-cloud-platform - 如何在 Google Cloud 中创建类似于 Salesforce 插件的自定义插件?
- swift - 查找 AVPictureInPictureController 的共享实例以获取 isPictureInPictureActive 值
- mongodb - $indexOfArray 按数组元素 mongoDB 内的对象属性搜索
- python - 在屏幕而不是相机上显示蒙版对象检测
- python - 在匹配查询的数据框中查找最后一次出现的连续(时间)行
- powershell - 如何在 Go 中查询 Windows 计划任务信息?
- python - 如何让 BeautifulSoup 的 select 方法从搜索列表中找到两个选择器
- javascript - 想要在电子邮件订阅表单中添加一个简单的数学验证码
- node.js - Oauth2 和 JWT 的区别