元编程编写错误

我想请问一下这段代码是哪里出错了?    tb = sql(select = (sqlCol(`fund_code),sqlColAlias(each(makeCall{defg (x,y){return x\(y + move(y,1))}},sqlCol(colNames), sqlCol(`bond_asset)),colNames)), from = <ej(tbFinancialReport, tbFundBondAsset, `fund_code`report_date)>, groupBy = [sqlCol(`fund_code)], groupFlag=0).eval()  报错如下:select clause must contain meta code representing column definitions

如果不读取sqlCol(`fund_code)则可正常运行

请先 登录 后评论

1 个回答

veryOrdinary

select 语句的主体有误,这是因为第二个 sqlColAlias 语句返回的是一个元组,而直接使用 ()拼接,变成一个标量和一个向量组成的元组,这样无法被 select 识别:

colNames = `aa`bb`cc
(sqlCol(`fund_code),sqlColAlias(each(makeCall{defg (x,y){return x\(y + move(y,1))}},sqlCol(colNames), sqlCol(`bond_asset)),colNames))

attachments-2023-08-y1woYneG64d43d40df85d.jpgoffset 为 1 的部分的元代码,应该拆分开来,才能正常执行:

reduce(join,sqlColAlias(each(makeCall{defg (x,y){return x\(y + move(y,1))}},sqlCol(colNames), sqlCol(`bond_asset)),colNames), sqlCol(`fund_code))

attachments-2023-08-J36J9vPx64d43dc717047.jpg

请先 登录 后评论