MCPcopy Create free account
hub / github.com/apache/arrow / FromChunkedStructArray

Method FromChunkedStructArray

cpp/src/arrow/table.cc:324–347  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

322}
323
324Result<std::shared_ptr<Table>> Table::FromChunkedStructArray(
325 const std::shared_ptr<ChunkedArray>& array) {
326 auto type = array->type();
327 if (type->id() != Type::STRUCT) {
328 return Status::Invalid("Expected a chunked struct array, got ", *type);
329 }
330 int num_columns = type->num_fields();
331 int num_chunks = array->num_chunks();
332
333 const auto& struct_chunks = array->chunks();
334 std::vector<std::shared_ptr<ChunkedArray>> columns(num_columns);
335 for (int i = 0; i < num_columns; ++i) {
336 ArrayVector chunks(num_chunks);
337 std::transform(struct_chunks.begin(), struct_chunks.end(), chunks.begin(),
338 [i](const std::shared_ptr<Array>& struct_chunk) {
339 return static_cast<const StructArray&>(*struct_chunk).field(i);
340 });
341 columns[i] =
342 std::make_shared<ChunkedArray>(std::move(chunks), type->field(i)->type());
343 }
344
345 return Table::Make(::arrow::schema(type->fields()), std::move(columns),
346 array->length());
347}
348
349std::vector<std::string> Table::ColumnNames() const {
350 std::vector<std::string> names(num_columns());

Callers

nothing calls this directly

Calls 13

InvalidFunction · 0.70
MakeFunction · 0.70
schemaFunction · 0.70
typeMethod · 0.45
idMethod · 0.45
num_fieldsMethod · 0.45
num_chunksMethod · 0.45
chunksMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
fieldMethod · 0.45
fieldsMethod · 0.45

Tested by

no test coverage detected