MCPcopy Create free account
hub / github.com/apache/datafusion / create_record_batch

Function create_record_batch

datafusion/core/benches/data_utils/mod.rs:89–140  ·  view source on GitHub ↗
(
    schema: SchemaRef,
    rng: &mut StdRng,
    batch_size: usize,
    batch_index: usize,
)

Source from the content-addressed store, hash-verified

87}
88
89fn create_record_batch(
90 schema: SchemaRef,
91 rng: &mut StdRng,
92 batch_size: usize,
93 batch_index: usize,
94) -> RecordBatch {
95 // Randomly choose from 4 distinct key values; a higher number increases sparseness.
96 let key_suffixes = [0, 1, 2, 3];
97 let keys = StringArray::from_iter_values(
98 (0..batch_size).map(|_| format!("hi{}", key_suffixes.choose(rng).unwrap())),
99 );
100
101 let values = create_data(rng, batch_size, 0.5);
102
103 // Integer values between [0, u64::MAX].
104 let integer_values_wide = (0..batch_size)
105 .map(|_| rng.random::<u64>())
106 .collect::<Vec<_>>();
107
108 // Integer values between [0, 1000).
109 let integer_values_mid = (0..batch_size)
110 .map(|_| rng.random_range(0..1000))
111 .collect::<Vec<_>>();
112
113 // Integer values between [0, 10).
114 let integer_values_narrow = (0..batch_size)
115 .map(|_| rng.random_range(0..10))
116 .collect::<Vec<_>>();
117
118 let mut dict_builder = StringDictionaryBuilder::<Int32Type>::new();
119 for _ in 0..batch_size {
120 if rng.random::<f64>() > 0.9 {
121 dict_builder.append_null();
122 } else {
123 dict_builder.append_value(format!("market_{}", rng.random_range(0..10)));
124 }
125 }
126
127 RecordBatch::try_new(
128 schema,
129 vec![
130 Arc::new(keys),
131 Arc::new(Float32Array::from(vec![batch_index as f32; batch_size])),
132 Arc::new(Float64Array::from(values)),
133 Arc::new(UInt64Array::from(integer_values_wide)),
134 Arc::new(UInt64Array::from(integer_values_mid)),
135 Arc::new(UInt64Array::from(integer_values_narrow)),
136 Arc::new(dict_builder.finish()),
137 ],
138 )
139 .unwrap()
140}
141
142/// Create record batches of `partitions_len` partitions and `batch_size` for each batch,
143/// with a total number of `array_len` records

Callers 1

create_record_batchesFunction · 0.70

Calls 5

create_dataFunction · 0.85
newFunction · 0.85
mapMethod · 0.45
append_nullMethod · 0.45
append_valueMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…