This repository has the list of custom ksqlDB UDF/UDAF created by Entechlog.com to solve various real-life use cases.
Table of Contents
Compatible KSQL versions:
- The examples in this repository are built against KSQL 5.4.0 for Apache Kafka and Confluent Platform 5.4.0.
Requirements to locally build, test, package the UDF/UDAF examples:
- Java 8+
- Maven 3.6+
See my blog on how to create UDF's at Entechlog for more details
Usage | Type | Description | Demo URL |
---|---|---|---|
UDF_TOTITLECASE(col1) | UDF | Return capitalized version of first character in each word | Demo |
UDF_EXTRACTNAME(col1,'lastName') | UDF | Returns firstName, middleName, lastName, suffix from fullName | Demo |
UDF_DS_CURRENTDATE() | UDF | Returns current date in YYYY-MM-DD format | Demo |
UDF_REPLACEALL(col1,'regex','replacement') | UDF | Calls Java String ReplaceAll | Demo |
UDF_TEXTTOHEX(col1) | UDF | Converts TEXT to HEX | Demo |
UDF_HEXTOTEXT(col1) | UDF | Converts HEX to TEXT | Demo |
UDF_FILTERARRAYLIST(col1,start,end) | UDF | Creates a subset of array based on start and end | Demo |
UDF_SORTARRAY(col1,'DESC') | UDF | Sorts list/array based on sort order | [Demo] |
UDF_CALCULATE_ENDDATE(col1) | UDF | Timeslices the array of dates and assigns an end date | [Demo] |
To package the UDFs/UDAFs (details):
To deploy the packaged UDFs/UDAFs to KSQL servers, refer to the
KSQL documentation on UDF/UDAF.
You can verify that the UDFs/UDAFs are available for use by running SHOW FUNCTIONS
, and show the details of
any specific function with DESCRIBE FUNCTION <name>
.
To use the UDFs/UDAFs in KSQL
SELECT C1, UDF_TOTITLECASE(C1) FROM T1;
SELECT C1, UDF_TOTITLECASE(C1,'firstName'), UDF_TOTITLECASE(C1,'lastName') FROM T1;
SELECT USERID, UDF_DS_CURRENTDATE() FROM STM_DATAGEN_USER_SRC_0010 EMIT CHANGES;
SELECT USERID, FULLNAME, UDF_REPLACEALL(FULLNAME, '[^A-ZA-Z0-9\\S]', '') FROM STM_DATAGEN_USER_SRC_0010 EMIT CHANGES;
SELECT UDF_TEXTTOHEX(DEPT_NAME), UDF_HEXTOTEXT(UDF_TEXTTOHEX(DEPT_NAME)),* FROM TBL_DEPARTMENTS_01 EMIT CHANGES;
SELECT UDF_TEXTTOHEX(DEPT_NAME), UDF_HEXTOTEXT(UDF_TEXTTOHEX(DEPT_NAME)),* FROM TBL_DEPARTMENTS_01 EMIT CHANGES;
SELECT CUSTOMERID, ORDERDATA, UDF_FILTERARRAYLIST(ORDERDATA, 3, 4)
FROM STM_ARRAY_DEMO_0030 EMIT CHANGES;
See LICENSE for licensing information.