使用CROSS JOIN SEQUENCE生成大规模重复数据表
使用SEQUENCE和EXPLODE实现Databricks SQL中表的批量重复
你原来用VALUES手动枚举生成行来交叉连接的方法,在需要重复几十、上百次时确实麻烦。用SEQUENCE生成整数序列,再配合EXPLODE拆分行,就能轻松实现任意次数的表重复:
实现重复100次的代码
CREATE TABLE my_new_big_table AS SELECT t.* FROM my_table t CROSS JOIN EXPLODE(SEQUENCE(1, 100)) AS v(i);
调整重复次数
如果要重复1000次,只需要修改SEQUENCE函数的第二个参数:
CREATE TABLE my_new_big_table AS SELECT t.* FROM my_table t CROSS JOIN EXPLODE(SEQUENCE(1, 1000)) AS v(i);
原理说明
SEQUENCE(1, N)会生成一个包含从1到N所有整数的数组。EXPLODE()函数会把这个数组的每个元素拆分成单独的行,相当于生成了N行数据。- 原表和这N行数据做
CROSS JOIN,就会让原表的每一行都重复N次,最终整个表的行数变为原表的N倍。
内容的提问来源于stack exchange,提问作者pymat
相关产品推荐
相关产品推荐

