标签: kdb

如何用功能性的,基于数组的语言(如K(或Q))表达这种命令性功能?

如何用功能性的,基于数组的语言(如K(或Q))表达这种命令性功能?

在草率的C ++中:

vector<int> x(10), y(10); // Assume these are initialized with some values.

// BTW, 4 is just a const -- it's part of the algorithm and is arbitrarily chosen.

vector<int> result1(x.size() - 4 + 1); // A place to hold a resulting array.
vector<int> result2(x.size() - 4 + 1); // A place to hold another resulting array.

// Here's the code I want to express functionally.
for (int i = 0; i <= x.size() …
Run Code Online (Sandbox Code Playgroud)

functional-programming k kdb

3
推荐指数
1
解决办法
348
查看次数

如何在KDB/Q中获取可用功能及其参数列表?

我如何在给定的命名空间中获取可用函数及其参数的列表?

kdb

3
推荐指数
1
解决办法
4832
查看次数

在q中删除/删除/删除变量

我在:创建了一个变量:

q)myvar: 1
Run Code Online (Sandbox Code Playgroud)

我该如何删除它?我试过了:

q)delete myvar from `.z
Run Code Online (Sandbox Code Playgroud)

但是命名空间`.z显然不是正确的,因为变量仍然存在:

q)myvar
1
Run Code Online (Sandbox Code Playgroud)

kdb q-lang

3
推荐指数
1
解决办法
3557
查看次数

基于其他列KDB +添加列

我有一个包含多个列的表("ibmqt"),我想添加一个新列,其中包含布尔值,指示每一行是否有一列("bid")大于或等于另一列("问").

到目前为止,我最成功的尝试是:

ibmqt: update (pricecross:select bid>=ask from ibmqt) from ibmqt
Run Code Online (Sandbox Code Playgroud)

但是,这导致以下结果:

time         sym bid   ask   bsize asize pricecross
----------------------------------------------------
00:00:59.063 IBM 43.53 43.57 10000 9000  (,`ask)!,0b
00:01:03.070 IBM 43.54 43.59 6500  3000  (,`ask)!,0b
00:02:31.911 IBM 43.56 43.6  500   4500  (,`ask)!,0b
00:03:43.070 IBM 43.56 43.56 10000 2500  (,`ask)!,1b
00:06:01.170 IBM 43.54 43.56 8500  4500  (,`ask)!,0b
00:06:11.081 IBM 43.56 43.58 500   1500  (,`ask)!,0b
00:08:15.126 IBM 43.55 43.57 1500  9000  (,`ask)!,0b
Run Code Online (Sandbox Code Playgroud)

显然,在"pricecross"栏中,我只想要0,0,0,1,0等.

有什么建议?

kdb q-lang

3
推荐指数
1
解决办法
888
查看次数

将API连接到kdb数据库

简单的问题 - 我已经使用Python 3.6成功连接到Coinbase API并在我的控制台中接收BTC买/卖价格.

我想将它连接到一个kdb数据库并开始创建一个滴答数据的HDB,但我对如何构建这个设置有点困惑,即将get请求推送到数据库进行存储.我的python代码看起来像......

api_key = 'XXXXX'
api_secret = 'XXXXX'
from coinbase.wallet.client import Client
import time, requests


client = Client(api_key, api_secret)


starttime = time.time()
while True:
    buy_price = client.get_buy_price(currency_pair = 'BTC-USD')
    sell_price = client.get_sell_price(currency_pair = 'BTC-USD')
    time.sleep(10.0)
    print(buy_price)
    print(sell_price)
    print("=-=-=-=-=-=")
Run Code Online (Sandbox Code Playgroud)

控制台打印Feed,看起来像......

{
  "amount": "8034.79",
  "base": "BTC",
  "currency": "USD"
}
{
  "amount": "7875.67",
  "base": "BTC",
  "currency": "USD"
}
=-=-=-=-=-=
{
  "amount": "8034.80",
  "base": "BTC",
  "currency": "USD"
}
{
  "amount": "7875.97",
  "base": "BTC",
  "currency": "USD"
}
=-=-=-=-=-=
Run Code Online (Sandbox Code Playgroud)

在本地存储这些数据的任何指导都会有所帮助.如果您需要任何其他信息,请与我们联系.

先感谢您!

python kdb python-3.x

3
推荐指数
1
解决办法
994
查看次数

KDB计数列的唯一组合

假设我有一张桌子

tbl:flip `id`evt!(1 1 1 2 2 2 2 2 3 3; `a`b`c`a`b`b`b`c`a`c)
Run Code Online (Sandbox Code Playgroud)

如何有效地计算evt的出现次数,但每个id只能计算一次

因此,结果应该如下(或将evt映射到唯一计数的任何其他格式)

res:flip `evt`ct !(`a`b`c; 3 2 3)
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
1
解决办法
470
查看次数

根据条件更改表中特定行的值

让我们假设我有下表.

    t:([]date:5#.z.D; ric:`A.HK`B.HK`C.HK`D.KS`E.T);
Run Code Online (Sandbox Code Playgroud)

从这里,我想删除尾随字符串,包括"." 如果满足某些条件.

以下是我一直在做的方式 - 但我想知道是否会有更高效/更快的方式.

     newriclist: exec distinct ric from t;
     dummy:{ (`ric`newric)!(x; `$ssr[string[x]; ".KS"; ""]) } each newriclist;
     t lj `ric xkey dummy ...
Run Code Online (Sandbox Code Playgroud)

或者,这是我想要理想地实现的目标,但它似乎不起作用.

    update ric:?[string[ric] like "*.KS"; `$ssr[string[ric]; ".KS"; ""]; ric] from `t;
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
1
解决办法
237
查看次数

kdb项目列表并转换为行

我有以下kdb表

name   value    price
-------------------------
Paul   1 2      3 4
Run Code Online (Sandbox Code Playgroud)

价值和价格是列表.我怎样才能将它们转换成

name   value    price
------------------------------
Paul   1        3
Paul   2        4
Run Code Online (Sandbox Code Playgroud)

?谢谢!!

kdb

3
推荐指数
1
解决办法
461
查看次数

替换列表中与KDB Q中的子字符串不匹配的元素

我将如何遍历KDB Q中的列表并替换不符合某些子字符串条件的元素?

逻辑示例伪代码:

list.stream()
    .forEach(x -> {
        if (x matches substring) :
            newList.add(x)
        else :
            newList.add("")
     })
Run Code Online (Sandbox Code Playgroud)

当前列表:

S: ("Lint"; "Stack"; "Linode"; "Overflow";"Linux")
Run Code Online (Sandbox Code Playgroud)

要匹配的子字符串在"Li"这里。这样,字符串“ Stack”和“ Overflow”被空字符串替换,因为它们不包含子字符串。

结果列表:

S: ("Lint"; ""; "Linode"; "";"Linux")
Run Code Online (Sandbox Code Playgroud)

kdb

3
推荐指数
2
解决办法
156
查看次数

仅选择表中的那些列在q kdb中不具有空值

我有一张桌子:

q)t:([] a:1 2 3; b:```; c:`a`b`c)
a b c
-----
1   a
2   b
3   c
Run Code Online (Sandbox Code Playgroud)

从此表中,我只想选择不具有空值的列,在这种情况下,输出中应该省略列b(类似于pandas中的dropna方法)。

expected output
a c
---
1 a
2 b
3 c
Run Code Online (Sandbox Code Playgroud)

我尝试了很多类似的事情

select from t where not null cols
Run Code Online (Sandbox Code Playgroud)

但没有用。

kdb

3
推荐指数
1
解决办法
232
查看次数

标签 统计

kdb ×10

q-lang ×2

functional-programming ×1

k ×1

python ×1

python-3.x ×1