public Object getFieldValue(Group group, String fieldName) {
        try {
            int idx = 0, start = fieldName.indexOf('(');
            if (start != -1) {
                idx = Integer.parseInt(fieldName.substring(start + 1, fieldName.indexOf(')')));
                fieldName = fieldName.substring(0, start);
            }
            Type field = group.getType().getType(fieldName);
            if (field.isPrimitive()) {
                switch (field.asPrimitiveType().getPrimitiveTypeName()) {
                    case INT32:
                        return group.getInteger(fieldName, idx);
                    case INT64:
                        return group.getLong(fieldName, idx);
                    case INT96:
                        return group.getInt96(fieldName, idx);
                    case FLOAT:
                        return group.getFloat(fieldName, idx);
                    case DOUBLE:
                        return group.getDouble(fieldName, idx);
                    case BOOLEAN:
                        return group.getBoolean(fieldName, idx);
                    case FIXED_LEN_BYTE_ARRAY:
                        return group.getBinary(fieldName, idx).getBytes();
                    case BINARY:
                        return new String(group.getBinary(fieldName, idx).getBytes(), srcCharset);
                    default:
                        LOG.error("Unsupported type for field: {} ,field name: {}", field, fieldName);
                        return null;
                }
            } else {
                return group.getGroup(fieldName, idx);
            }
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            return null;
        }
    }
Resolve to the parent Group of the path for subsequent value taking
@param root Starting Group for Analysis
@param path Analyze the path, separated by dots "."
@return The parent group of the path
inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/decode/ParquetSourceData.java