KDB/Q关于解析字符串和连接的问题

发布于 2025-02-12 12:14:45 字数 3313 浏览 1 评论 0 原文

InstressID OrderID 策略 填充
NG1 JHBUBUY-CLIENTNAME1-2022-07-01 VWAP 5000
NG2 NG2 NB8YVCE-CLIENTNAME2-2022-2022-07-01 POV 300
NG1 NG1 CEBCIUBE-CLIENTNAME 3-2022-2022-07-01 TWAP 1000

twap 1000与榜单相比。我是KDB/Q的初学者,所以请忍受我。任何指导都会有所帮助。

1.)我试图通过“ - ”来解析秩序,并根据我在Orderid

instransId strundId 策略 上解析的内容创建一个新列“客户名称”,填充 客户名称
NG1 JHBUBUY-CLIENTNAME1-2022-07-01 VWAP 5000 CLUINTNAME 1 NG2 NB8YVCE-CLIENTNAME NAMENAME NAMENAME NAMENAME NAMENAME NAMENAME
VWAP NAMENAME NAMENAME -2022-07-01 POV 300 ClientName124
NG1 CEBCIUBE-CLIENTNAMEABC-2022-07-01 TWAP 1000 CLIENTNAMEABC

2.)通过解析订单创建一个新列,然后将其与一个称为instanceID的单独列将其串联。 它创建了一个instance_orderID

instance instordID 策略 填充 instensId_orderID
ng1 jhbubuy-clientname1-2022-07-01 5000 ng1 -jhbubuy-
ng2 2022-222-22-22-22-22-22-2-22-22-22-22-22-22-22-22-22 vwap 因此, NG2-NB8YVCE-CLIENTNAME124-2022-07-01
NG1 CEBCIUBE-CLIENTNAMEABC-2022-07-07-01 TWAP 1000 NG1-CLIENTNAMEABC-2022-2022-2022-07-07-01
InstanceID OrderID Strategy Fills
NG1 jhbubuy-ClientName1-2022-07-01 VWAP 5000
NG2 nb8yvce-ClientName2-2022-07-01 POV 300
NG1 cebciube-ClientName3-2022-07-01 TWAP 1000

Hi guys have the table above as an example. I am beginner in KDB/Q so please bear with me. Any guidance would help.

1.) I am trying to parse OrderID by "-" and create a new column "ClientName" based on what I parsed on OrderID

InstanceID OrderID Strategy Fills ClientName
NG1 jhbubuy-ClientName1-2022-07-01 VWAP 5000 ClientName1
NG2 nb8yvce-ClientName124-2022-07-01 POV 300 ClientName124
NG1 cebciube-ClientNameABC-2022-07-01 TWAP 1000 ClientNameABC

2.) Create a new column by parsing OrderID then concatenate it with a separate column called InstanceID. So it creates a InstanceID_OrderID

InstanceID OrderID Strategy Fills InstanceID_OrderID
NG1 jhbubuy-ClientName1-2022-07-01 VWAP 5000 NG1-jhbubuy-2022-07-01
NG2 nb8yvce-ClientName124-2022-07-01 POV 300 NG2-nb8yvce-ClientName124-2022-07-01
NG1 cebciube-ClientNameABC-2022-07-01 TWAP 1000 NG1-ClientNameABC-2022-07-01

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别想她 2025-02-19 12:14:45

要获得所需的表,您应该:

  1. 使用 要通过“ - ”拆分OrderID,
  2. 获取每个子名称的每个子列表的第二个元素
  3. 从每个sublist中删除第二个元素,请使用 sv instanceid_orderid的操作员。

如果表具有以下结构:

t: flip`InstanceID`OrderID`Strategy`Fills!
  (`NG1`NG2`NG3;
  ("hbubuy-ClientName1-2022-07-01";
     "nb8yvce-ClientName2-2022-07-01";
     "cebciube-ClientName3-2022-07-01");
  `VWAP`POV`TWAP;
  5000 300 1000);

下一个查询执行作业:

update
  ClientName: {("-" vs x) 1} each OrderID,
  InstanceID_OrderID: {x: "-" vs x; "-" sv enlist[y],(1#x),2_x}'[OrderID;string InstanceID]
from t

匿名函数

  1. {(“ - ” vs x)1} splits OrderID by by “ - ” 并选择索引1
  2. {x:“ - ” vs x; “ - ” sv enterist [y],(1#x),2_x} splits orderiD by “ - ” ,选择0和2+索引(那里) Q)中的索引操作不删除,预先启动InstanceID并将所有内容连接到“ - ”字符串中

To get desired table you should:

  1. Use vs operator to split OrderID by "-"
  2. Get second element of each sublist for ClientName
  3. Remove second element from each sublist, prepend InstanceID and join new list using sv operator for InstanceID_OrderID.

If the table has following structure:

t: flip`InstanceID`OrderID`Strategy`Fills!
  (`NG1`NG2`NG3;
  ("hbubuy-ClientName1-2022-07-01";
     "nb8yvce-ClientName2-2022-07-01";
     "cebciube-ClientName3-2022-07-01");
  `VWAP`POV`TWAP;
  5000 300 1000);

The next query does the job:

update
  ClientName: {("-" vs x) 1} each OrderID,
  InstanceID_OrderID: {x: "-" vs x; "-" sv enlist[y],(1#x),2_x}'[OrderID;string InstanceID]
from t

where

  1. anonymous function {("-" vs x) 1} splits OrderID by "-" and chooses index 1
  2. {x: "-" vs x; "-" sv enlist[y],(1#x),2_x} splits OrderID by "-", chooses 0 and 2+ indices (there is no remove by index operation in Q), prepends InstanceID and joins everything into "-" delimited string
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文