带有ROW类型的Presto自定义UDF

时间:2018-11-20 11:08:52

标签: java user-defined-functions presto

我试图编写一个接受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对象中获取值。我试图按名称获取字段,字段是异构的,这意味着可以是数组,字符串或双精度型。

谢谢

0 个答案:

没有答案