思路:原始数据为每只股票入市、退市日期记录,数据量不大,可以逐条处理,使用交叉连接生成每只股票相应的记录,再unionAll合并。
示例代码如下:
def f(t, i) { windCode = t[i][`S_INFO_WINDCODE] code = t[i][`SW_IND_CODE] entryDate = t[i][`ENTRY_DT] removeDate = t[i][`REMOVE_DT] days = entryDate..removeDate days = days[weekday(days) between 1:5] return cj(table(windCode as S_INFO_WINDCODE, code as SW_IND_CODE), table(days as DT)) } t = table(`A`B`C as S_INFO_WINDCODE, `6112010200`6112010200`6112010200 as SW_IND_CODE, 1994.09.07 1998.11.11 1999.05.27 as ENTRY_DT, 2011.09.03 2010.10.08 2011.09.30 as REMOVE_DT) unionAll(each(f{t}, 1..size(t) - 1), false)