THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
// UDF Development public static class NamedArgumentsTableFunction extends TableFunction<Object> { // Method overloads with different parameter sets // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2')) @FunctionHint( input @FunctionHint( input = {@DataTypeHint("STRING"), @DataTypeHint("STRING NOT NULL")}, output output = @DataTypeHint("STRING"), argumentNames arguments = { @ArgumentHint(name = {"in1"), @ArgumentHint(name = "in2") }) public public void eval(String arg1, String arg2) { collect collect(arg1 + ", " + arg2); } // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2', in3 => 'value3')) @FunctionHint( input @FunctionHint( input = {@DataTypeHint("STRING"), @DataTypeHint("STRING"), @DataTypeHint("STRING NOT NULL")}, output output = @DataTypeHint("STRING"), argumentNames arguments = { @ArgumentHint(name = {"in1"), @ArgumentHint(name = "in2"), @ArgumentHint(name = "in3") }) public public void eval(String arg1, String arg2, String arg3) { collect collect(arg1 + ", " + arg2 + "," + arg3); } } } } // Call Procedure Development public static class NamedArgumentsProcedure implements Procedure { // Method overloads with different parameter sets // Example usage: CALL myNamedProcedure(in1 => 'value1', d => 100) @ProcedureHint( input = {@DataTypeHint("STRING"), @DataTypeHint("INT")},= output = @DataTypeHint("STRING"), argumentNames arguments = { @ArgumentHint(name = {"in1"), @ArgumentHint(name = "in2") }) public public String[] call(ProcedureContext procedureContext, String arg1, Integer arg2) { return new String[]{arg1 + ", " + arg2}; } // Example usage: CALL myNamedProcedure(in1 => 100, in2 => 200) @ProcedureHint( input = {@DataTypeHint("INT"), @DataTypeHint("INT")}, output = @DataTypeHint("STRING"), argumentNames arguments = { @ArgumentHint(name = {"in1"), @ArgumentHint(name = "in2")}) public public String[] call(ProcedureContext procedureContext, Integer arg1, Integer arg2, Integer arg3) { return new String[]{arg1 + ", " + arg2}; } } |
2 .The class can only have one method, and users can optionally specify parameters.
Code Block | ||
---|---|---|
| ||
// UDF Development public static class NamedArgumentsTableFunction extends TableFunction<Object> { // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2')) // Example usage: SELECT * FROM TABLE(my_table_function(in1 => 'value1', in2 => 'value2', in3 => 'value3')) @FunctionHint( input = {@DataTypeHint("STRING"), @DataTypeHint(value = "STRING", isOptional = false), @DataTypeHint(value = "STRING", isOptional = true)}, output = @DataTypeHint("STRING"), argumentNames arguments = { @ArgumentHint(name = {"in1", isOptional = true), @ArgumentHint(name = "in2", isOptional = true) @ArgumentHint(name = "in3", isOptional = true)}) public public void eval(String arg1, String arg2, String arg3) { collect(arg1 + ", " + arg2 + "," + arg3); } } // Call Procedure Development public static class NamedArgumentsProcedure implements Procedure { // Example usage: CALL myNamedProcedure(in1 => 'value1', in2 => 'value2') // Example usage: CALL myNamedProcedure(in1 => 'value1', in2 => 'value2', in3 => 'value3') @ProcedureHint( input = {@DataTypeHint(value = "STRING"), isOptional@DataTypeHint(value = false"STRING"), @DataTypeHint(value = "STRING")}, output isOptional = false@DataTypeHint("STRING"), @DataTypeHint(value arguments = { @ArgumentHint(name = "STRINGin1", isOptional = truefalse)}, output, @ArgumentHint(name = @DataTypeHint("STRING"), argumentNamesin2", isOptional = true) @ArgumentHint(name = {"cin3", "d", "e"}) publicisOptional = true)}) public String[] call(ProcedureContext procedureContext, String arg1, String arg2, String arg3) { return new String[]{arg1 + ", " + arg2 + "," + arg3}; } } |
...
Use named parameters when using function and call procedure.
Users can now use functions and call procedures with named parameters as follows:
Code Block | ||
---|---|---|
| ||
-- for scalar function SELECT my_scalar_function(param1 => ‘value1’, param2 => ‘value2’’) FROM [] -- for table function SELECT * FROM TABLE(my_table_function(param1 => 'value1', param2 => 'value2')) -- for agg function SELECT my_agg_function(param1 => 'value1', param2 => 'value2') FROM [] -- for call procedure CALL procedure_name(param1 => ‘value1’, param2 => ‘value2’) |
...