如何为SDV多表HMASynthesizer设置合成数据框行数?
解决方案
要控制合成数据的行数,只需在调用synthesizer.sample()时传入对应的参数,有两种常用方式:
方式1:按比例生成所有表数据
传入num_rows参数,指定父表(regions)的目标行数,子表(users)会自动按照原数据中父行与子行的关联比例生成对应数量的行:
# 示例:让regions表生成10行,users表按原比例生成 synthetic_data = synthesizer.sample(num_rows=10)
方式2:精准指定每个表的行数
传入num_rows_per_table字典,键为表名,值为对应表的目标行数,适合需要单独控制每张表行数的场景:
# 示例:指定users表生成8行,regions表保持5行 synthetic_data = synthesizer.sample( num_rows_per_table={ 'users': 8, 'regions': 5 } )
注意事项
- 指定子表行数时,要确保子表的外键值能在父表的主键中找到匹配项,避免出现无效关联。
- 如果仅指定父表行数,子表会遵循原数据中每个父记录对应的子记录数量分布来生成数据。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

