Return Presto Udf 中的行类型
Return Row Type In Presto Udf
我想实现一个 udf,returns 我连续。
我在网上搜索了一下,没有例子。在 presto 的源代码中,我看到了 this 之类的方法,但它采用行数据类型作为参数。没有如何创建行的示例。
谢谢。
创建新的 UDF 有两个步骤
1 创建 UDF link
2 Register UDF。
也就是说你有UDF签名
long Dt_TIME_ADD(string time,
string duration
[, string default_timezone = 'UTC'])
Here 1 Long is return type
2 TIME_ADD is UDF Name
3 Parms time ,duration and Default parm default_timezone
这个可以这样称呼
SELECT ... WHERE TD_TIME_RANGE(time,
'2013-01-01',
TD_TIME_ADD('2013-01-01', '1d'))
像这样定义你的输出函数:
@OutputFunction("row(name double,some double)")
public static void output(SomeState state, BlockBuilder out){
BlockBuilder blockBuilder = DoubleType.DOUBLE.createBlockBuilder(new BlockBuilderStatus(), 1);
DoubleType.DOUBLE.writeDouble(blockBuilder, 1.0);
DoubleType.DOUBLE.writeDouble(blockBuilder, 2.0);
Block block = blockBuilder.build();
out.writeObject(block);
out.closeEntry();
}
在这里,我们定义行的参数类型(名称类型)
我想实现一个 udf,returns 我连续。
我在网上搜索了一下,没有例子。在 presto 的源代码中,我看到了 this 之类的方法,但它采用行数据类型作为参数。没有如何创建行的示例。
谢谢。
创建新的 UDF 有两个步骤
1 创建 UDF link
2 Register UDF。
也就是说你有UDF签名
long Dt_TIME_ADD(string time,
string duration
[, string default_timezone = 'UTC'])
Here 1 Long is return type
2 TIME_ADD is UDF Name
3 Parms time ,duration and Default parm default_timezone
这个可以这样称呼
SELECT ... WHERE TD_TIME_RANGE(time,
'2013-01-01',
TD_TIME_ADD('2013-01-01', '1d'))
像这样定义你的输出函数:
@OutputFunction("row(name double,some double)")
public static void output(SomeState state, BlockBuilder out){
BlockBuilder blockBuilder = DoubleType.DOUBLE.createBlockBuilder(new BlockBuilderStatus(), 1);
DoubleType.DOUBLE.writeDouble(blockBuilder, 1.0);
DoubleType.DOUBLE.writeDouble(blockBuilder, 2.0);
Block block = blockBuilder.build();
out.writeObject(block);
out.closeEntry();
}
在这里,我们定义行的参数类型(名称类型)