示例代码如下:
N = 100 tmp = table(take(`000001.SH, N) as index_code, take(`60 + format(rand(1..1000, N), "0000"), N) as secu_code, rand(1990.01.01..2000.01.01, N) as indate, rand(2015.01.01..2020.01.01, N) as outdate) // 方案一 timer { tmp2 = cj(tmp, table(1990.01.01..2020.01.01 as dayRange)) tmp3 = select * from tmp2 context by index_code, dayRange having dayRange >= indate and dayRange <= outdate data=select count(*) from tmp3 group by index_code, dayRange } // Time elapsed: 665.689 ms // 方案二 def c1(tmp, idate) { return [sum(idate >= tmp.indate && idate <= tmp.outdate)] } timer { dayRange = 1990.01.01..2020.01.01 data2 = table(transpose(each(c1{tmp, }, dayRange)).rename!([`count])) data2 = data2[data2.count >0 ] } // Time elapsed: 86.598 ms