如何使用功能修改将p#添加到表中?

时间:2018-02-15 17:39:20

标签: kdb

我有一个查询,可以从表中返回一组syms的数据。

dataFromTab:delete date from select from table where date=2015.01.01,any (sym like) each ("sym1";"sym2";"sym3";"sym4")
dataFromTab:`sym xasc dataFromTab;
@[`dataFromTab;`sym;`p#];

类型var是98h并且按sym排序工作正常但是当使用功能修改添加p#时会给我一个'类型错误。

对于我出错的地方的任何意见都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:3)

您是在函数内还是从全局命名空间调用所有这些?

如果dataFromTab是局部变量,那么应用import bottleneck import pandas as pd import xarray as xr from sklearn.datasets import load_iris X_iris = pd.DataFrame(load_iris().data, index = ["iris_%d" % i for i in range(load_iris().data.shape[0])], columns = [x.split(" (cm)")[0].replace(" ","_") for x in load_iris().feature_names]) da_iris = xr.DataArray(X_iris, dims=["samples", "attributes"]) def covariance_gufunc(x, y): return ((x - x.mean(axis=-1, keepdims=True)) * (y - y.mean(axis=-1, keepdims=True))).mean(axis=-1) def pearson_correlation_gufunc(x, y): return covariance_gufunc(x, y) / (x.std(axis=-1) * y.std(axis=-1)) def spearman_correlation_gufunc(x, y): x_ranks = bottleneck.rankdata(x, axis=-1) y_ranks = bottleneck.rankdata(y, axis=-1) return pearson_correlation_gufunc(x_ranks, y_ranks) def spearman_correlation(x, y, dim): return xr.apply_ufunc( spearman_correlation_gufunc, x, y, input_core_dims=[[dim], [dim]], dask='parallelized', output_dtypes=[float]) dataFromTab将无效。

p# to the global reference

您需要在本地重新分配dataFromTab才能使其正常工作;

q){data:select from tab;@[`data;`sym;`p#]}[]
'type
 [1]  {data:select from tab;@[`data;`sym;`p#]}
                         ^
q))\

您还可以使用'set'全局创建表,这将允许您的原始语法工作。但是你可能不想创建不必要的全局变量;

q){data:select from tab;data:@[data;`sym;`p#]}[]

答案 1 :(得分:0)

sym是字符串列吗?如果我转换为字符串,我会收到错误:

q)trades:update string sym from trades
q)trades:`sym xasc trades
q)@[`trades;`sym;`p#]
'type
  [0]  @[`trades;`sym;`p#]
       ^

您可以尝试将其转换为符号,看看是否有效吗?