gpt4 book ai didi

missing-data - 从基本记录生成记录序列

转载 作者:行者123 更新时间:2023-12-05 02:26:32 26 4
gpt4 key购买 nike

有没有办法把表1展开成表2?就是将start_no和end_no之间的每一个整数作为seq_no字段输出,取原表的其他字段组成新表(表2)。

表 1:

date       source market channel_no start_no end_no err_type
---------- ------ ------ ---------- -------- ------ --------
2022.06.01 src55 SZ 2011 565663 565665 1
2022.06.01 src55 SZ 2011 565918 565920 1
2022.06.01 src55 SZ 2011 566010 566012 1
2022.06.01 src55 SZ 2011 566363 566365 1
2022.06.01 src55 SZ 2011 566512 566513 1

表 2:

date       source market channel_no err_type seq_no
---------- ------ ------ ---------- -------- ------
2022.06.01 src55 SZ 2011 1 565663
2022.06.01 src55 SZ 2011 1 565664
2022.06.01 src55 SZ 2011 1 565665
2022.06.01 src55 SZ 2011 1 565918
2022.06.01 src55 SZ 2011 1 565919
2022.06.01 src55 SZ 2011 1 565920
2022.06.01 src55 SZ 2011 1 566010
2022.06.01 src55 SZ 2011 1 566011
2022.06.01 src55 SZ 2011 1 566012
2022.06.01 src55 SZ 2011 1 566363
2022.06.01 src55 SZ 2011 1 566364
2022.06.01 src55 SZ 2011 1 566365
2022.06.01 src55 SZ 2011 1 566512
2022.06.01 src55 SZ 2011 1 566513

最佳答案

可以使用函数eachcj(cross join)循环遍历原表的每一行,与生成的序列数据表进行交叉连接start_noend_no,其中交叉联接返回联接表中行的笛卡尔积。最后,您使用 function unionAll 将所有中间表组合成最终输出表。

仿真数据、算法及结果如下:

模拟数据:

start_no=[565663,565918,566010,566363,566512]
end_no=[565665,565920,566012,566365,566513]
tb=table(take(2022.06.01,5) as date,take(`src55,5) as source,take(`SZ,5) as market,take(2011,5) as channel_no,start_no , end_no,take(1,5) as err_type);

tb;
date source market channel_no start_no end_no err_type
---------- ------ ------ ---------- -------- ------ --------
2022.06.01 src55 SZ 2011 565663 565665 1
2022.06.01 src55 SZ 2011 565918 565920 1
2022.06.01 src55 SZ 2011 566010 566012 1
2022.06.01 src55 SZ 2011 566363 566365 1
2022.06.01 src55 SZ 2011 566512 566513 1

算法:

def f(tb,i){
tt=select date,source,market,channel_no,err_type from tb where rowNo(date)=i
start_no=tb[i]['start_no']
end_no=tb[i]['end_no']
return cj(tt,table(start_no..end_no as seq_no))
}
tb=unionAll(each(f{tb},1..size(tb)-1),false)

结果:

date       source market channel_no err_type seq_no
---------- ------ ------ ---------- -------- ------
2022.06.01 src55 SZ 2011 1 565663
2022.06.01 src55 SZ 2011 1 565664
2022.06.01 src55 SZ 2011 1 565665
2022.06.01 src55 SZ 2011 1 565918
2022.06.01 src55 SZ 2011 1 565919
2022.06.01 src55 SZ 2011 1 565920
2022.06.01 src55 SZ 2011 1 566010
2022.06.01 src55 SZ 2011 1 566011
2022.06.01 src55 SZ 2011 1 566012
2022.06.01 src55 SZ 2011 1 566363
2022.06.01 src55 SZ 2011 1 566364
2022.06.01 src55 SZ 2011 1 566365
2022.06.01 src55 SZ 2011 1 566512
2022.06.01 src55 SZ 2011 1 566513

关于missing-data - 从基本记录生成记录序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73739258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com