I think this should not directly write to csv but create a dataframe that can then be easily written to csv or any other format. Generally though, such simulating functionality we better evaluate via different PR and make this about data sources only. Or maybe I'm missing how the two are related?