Skip to main content

Implement Custom Functions

A custom function package contains function definitions and implementations that the DataSQRL compiler can import into a script.

info

Before implementing a custom function package, check if the function you need is part of the system function library or can be found in the repository.

To create a new function package, first create a sub-folder myFunctionPackage in the directory of the script where you want to import the functions.

Then follow the instructions below for implementing a function package in the language of your choice.

Functions in Java​

See the java user defined function example in our examples.

Upload User-Defined Functions to the Repository​

If you want to upload your custom UDF to the Datasqrl repository, you need to take some extra steps.

In the same folder where the JAR file resides (e.g., myudf-0.1.0-SNAPSHOT.jar), create the following files.

Create package.json​

The package.json file defines the package manifest, such as name, version, etc. A minimal package.json looks like this:

{
"version": "1",
"package": {
"name": "datasqrl.examples.udf",
"version": "0.5.5",
"latest": true
}
}

For detailed instructions on configuring the package manifest, please refer to the documentation.

Create Function Descriptors​

For each UDF in the JAR, create a <functionname>.function.json descriptor. For example:

myscalarfunction.function.json:

{"language":"java","functionClass":"com.myudf.MyScalarFunction","jarPath":"datasqrl/examples/udf/myudf-0.1.0-SNAPSHOT.jar"}

Publish the Package​

Once you are done, log in to your repository account with sqrl login, and issue sqrl publish from the folder where package.json resides.

Test Your UDF​

To test your UDF, change the import path in the example as follows:

IMPORT myudf.Entry;
IMPORT datasqrl.examples.udf.MyScalarFunction;

MyTable := SELECT val, MyScalarFunction(val, val) AS myFnc
FROM Entry;