两个表left join on, 怎么实现通过字符串指定输出右表的列

版本:2.00.8

问题描述:

现在有两个表 TB 和 O_510050 想要做 left join 操作

attachments-2022-12-wkqz4l0v639ac2a2d6f46.png为什么第二种方式可以正常执行,第一种方式会报错,报错如下:

attachments-2022-12-EB84yhlp639ac2d8ca0f5.png因为想要把这步操作包装到函数里,列名 ”close“ 需要作为参数传入,所以需要通过字符串指定输出的右表的列。所以第二种方式能执行却不是我想要的。

这个需求怎么实现?

请先 登录 后评论

1 个回答

NA

报错原因:

因为第一种直接从 O_510050 的表里取 close 这一列。left join 是跟左表对齐的,左右表的长度不一样,所以报错长度不一致。

第二种是从 left join 的结果表里取 O_510050 的 close 列。

解决方案:用元编程

TB = sql(select=(each(sqlCol, TB.colNames()) join sqlCol("close")), from=lj(TB, O_510050, `datetime)).eval()

备注:上述写法需要表 TB 里面没有 ”close“ 列。因为左右表重名的话,lj 结果表里的对应右表的列名就不是 ”close“ 了。

           如果有重名,可以考虑用 rename! 函数换个列名




请先 登录 后评论
  • 1 关注
  • 0 收藏,785 浏览
  • 提出于 2022-12-15 14:49

相似问题