veryOrdinary
veryOrdinary

性别: 注册于 2023-02-27

向TA求助
20金币数
1180 经验值
0个粉丝
主页被访问 648 次

最近动态

2024-02-25 13:13 发起提问

2024-02-25 13:10 回答问题

loadTextEx 可以指定一个transform 参数,该参数的入参是一个函数,通常用于对导入数据的列进行转换和处理。可以通过在该函数中,可以把 bond_name 函数用 toUFT8 或者 convertEncode 函数处理以解决乱码问题。

2024-01-31 17:40 回答问题

可以用元编程生成最后的 SQL 语句。筛选列时可以用 split 拆出 i, j 然后进行比较。 t = table(1 2 3 4 as event_1_5, 1 3 4 5 as event_2_5, 1 2 3 4 as event_5_1, 1 2 3 4 as event_5_8, 1 2 3 4 as event_6_3)colNames=t.columnNames()s=split(colNames,"_")cols=colNames[each(x->int(x[1])>int(

2024-01-31 16:42 回答问题

group by有多种不同的实现,大体上说有两种算法,第一种是hash group,一种是sort group,前者不会排序,后者会排序。一般来说,hash group的效率更高,性能更好,所以能用hash group的话会优先用hash group。 在标准sql的定义中,除非加order by,否则返回的数据本身是不保证顺序,要保证顺序的话还是建议显示地order by。

2024-01-30 16:15 回答问题

因为 close==max(close) 是对整个表的数据进行过滤的,如果最大值所在的票不是 '123230.SZ' 那么就会是空,可以拆成两个语句,即先选出票再过滤,更高效的写法是对所有票一起计算,参考如下脚本 t = table(2022.01.01+1..3 as time, `b`b`a as sym, 1.1 1.2 1.3 as id)select time from t context by sym having id = max(id)

2024-01-05 14:51 回答问题

因为 where 先于 order by 执行,所以您这样直接查询,可能不符合您的预期,正确的操作是先 order by 进行排序,然后对排序后的结果进行 where 过滤。

2024-01-05 14:37 回答问题

可以参考以下脚本 t = table(1..5 as col1, 1 2 3 3 5 as col2, 1 3 2 4 5 as col3)select *,rowSum(each(eq{t.values()[0]},t.values()[1:3])) from t 或者 select *,rowSum(t.values()[0] == matrix(t.values()[1:3])) from t

2024-01-05 14:24 回答问题

目前不支持 <"aaa"> 或者 <1> 的写法,可以想办法绕过去,比如构造常量字符串使用: def getConstString(v): take("aaa", v.size()) // v 是任意一个列字段 然后写 <getConstString(v)>。如果是数值还可以写为 <(col-col) + k> 其中 col 是任意一个列字段,k 是数值常量。

2024-01-05 14:04 回答问题

可以用元编程写,比如 sql(sqlCol(["col1", "col2", "col3"], avg), t), 其中 ["col1", "col2", "col3"] 这部分可以用 t.colNames() 获取后删除不想要的列;都是数值也可以存成矩阵,matrix(t.values()[1:]).rename!(t.values()[0],)

2024-01-05 13:59 回答问题

如果是内存表的话,可以用索引过滤,类似: t = table(`bb`bb`aa`aa as id, NULL NULL 3 4 as val)t = t[t.val!=NULL] 如果是分布式表,需要使用 SQL 语句: delete from tb where nullCol is null