Пользовательский UDF Presto с типом ROW - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь написать пользовательский UDF, который принимает переменные аргументы, поэтому я думал использовать ROW Type в качестве типа аргумента, как показано ниже.

        @Description("test")
        @ScalarFunction("test")
        @SqlType(StandardTypes.ARRAY)
        public static ArrayList<Integer> test(@SqlType(StandardTypes.JSON) Slice def, @SqlType(StandardTypes.ROW) RowType participatingRows) {
            try {

                Definition definition = JSON_CODEC.fromJson(def.getBytes());

                // trying to do something similar to this
                // ArrayList<String> names = participatingRows.getFieldByName("name")
                // ArrayList<Double> scores = participatingRows.getFieldByName("score")


                // 
                for(RowType.RowField rowField : participatingRows.getFields()){
                    // how to get the value here 
                    // rowField.getType().getObjectValue()
                }

            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

Но я не понимаю, как извлечь значения из объекта RowField.Я пытаюсь получить поля по имени, поля неоднородны, то есть один может быть массивом или строкой или двойным.

Спасибо

...