public static Schema selectInOrder(Schema baseSchema, List<String> fieldNames) {
    Preconditions.checkNotNull(fieldNames);
    Preconditions.checkNotNull(baseSchema);
    validateSchemaFields(baseSchema, fieldNames);

    int schemaId = baseSchema.schemaId();
    List<Types.NestedField> fields =
        fieldNames.stream().map(baseSchema::findField).collect(Collectors.toList());

    return new Schema(schemaId, fields);
  }
Create an Iceberg Schema {@link Schema} from a {@link Schema} based on the given order of
fieldNames.

<p>{@link Schema#select(String...)} is not used because it returns a new Schema whose fields
are not in the same order as the incoming fields.

@param baseSchema a Schema on which loading is based
@param fieldNames a list of field names
@return a new Schema on which contain the fieldNames of the base schema.
amoro-format-iceberg/src/main/java/org/apache/amoro/utils/SchemaUtil.java