CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-apache-flink--flink-table-api-java-uber

Comprehensive uber JAR that consolidates all Java APIs for Apache Flink's Table/SQL ecosystem, enabling developers to write table programs and integrate with other Flink APIs through a single dependency.

Pending
Overview
Eval results
Files

expressions.mddocs/

Expression System

Rich expression language for data manipulation, filtering, and computation with support for arithmetic, logical, string, and temporal operations in Apache Flink's Table API.

Capabilities

Expression Factory

Central factory for creating expressions with static imports for concise syntax.

/**
 * Reference a table column by name
 * @param name Column name
 * @return Expression referencing the column
 */
public static Expression $(String name);

/**
 * Create a literal value expression
 * @param value Constant value (String, Number, Boolean, etc.)
 * @return Expression representing the literal value
 */
public static Expression lit(Object value);

/**
 * Create a null literal of specific type
 * @param dataType Type of the null value
 * @return Expression representing typed null
 */
public static Expression nullOf(DataType dataType);

/**
 * Create a range expression for array slicing
 * @param start Start index (inclusive)
 * @param end End index (exclusive)
 * @return Range expression for array operations
 */
public static Expression range(int start, int end);

Basic Usage:

import static org.apache.flink.table.api.Expressions.*;

// Column references
Expression userId = $("user_id");
Expression userName = $("name");

// Literals
Expression hundred = lit(100);
Expression greeting = lit("Hello");
Expression pi = lit(3.14159);
Expression isActive = lit(true);

// Null values
Expression nullString = nullOf(DataTypes.STRING());
Expression nullTimestamp = nullOf(DataTypes.TIMESTAMP());

Arithmetic Operations

Mathematical operations for numeric expressions.

// Basic arithmetic
public Expression plus(Object other);
public Expression minus(Object other);
public Expression times(Object other);
public Expression dividedBy(Object other);
public Expression mod(Object other);

// Unary operations  
public Expression unaryMinus();
public Expression unaryPlus();

// Power and mathematical functions
public Expression power(Object exponent);
public Expression abs();
public Expression sqrt();
public Expression exp();
public Expression log();
public Expression log10();
public Expression log2();
public Expression ln();

// Trigonometric functions
public Expression sin();
public Expression cos();
public Expression tan();
public Expression asin();
public Expression acos();
public Expression atan();
public Expression sinh();
public Expression cosh();
public Expression tanh();

// Rounding functions
public Expression ceil();
public Expression floor();
public Expression round();
public Expression round(int scale);

Arithmetic Examples:

// Basic calculations
Expression totalPrice = $("quantity").times($("unit_price"));
Expression discount = $("price").times(lit(0.1));
Expression finalPrice = $("price").minus(discount);

// Mathematical functions
Expression distance = $("x").power(lit(2)).plus($("y").power(lit(2))).sqrt();
Expression logValue = $("value").log();
Expression roundedPrice = $("price").round(2);

Comparison Operations

Comparison and equality operations returning boolean expressions.

// Equality comparisons
public Expression isEqual(Object other);
public Expression isNotEqual(Object other);

// Ordering comparisons
public Expression isGreater(Object other);
public Expression isGreaterOrEqual(Object other);
public Expression isLess(Object other);
public Expression isLessOrEqual(Object other);

// Null checks
public Expression isNull();
public Expression isNotNull();

// Range operations
public Expression between(Object lower, Object upper);
public Expression notBetween(Object lower, Object upper);

// Set membership
public Expression in(Object... values);
public Expression notIn(Object... values);

Comparison Examples:

// Age filtering
Expression adults = $("age").isGreaterOrEqual(lit(18));
Expression seniors = $("age").between(lit(65), lit(100));

// Price comparisons
Expression expensive = $("price").isGreater(lit(1000));
Expression affordable = $("price").isLessOrEqual(lit(100));

// Null handling
Expression hasEmail = $("email").isNotNull();
Expression validUser = $("name").isNotNull().and($("email").isNotNull());

// Category filtering
Expression popularCategories = $("category").in(lit("electronics"), lit("books"), lit("clothing"));

Logical Operations

Boolean logic operations for combining and negating expressions.

/**
 * Logical AND operation
 * @param other Expression to AND with
 * @return Boolean expression representing AND result
 */
public Expression and(Object other);

/**
 * Logical OR operation
 * @param other Expression to OR with
 * @return Boolean expression representing OR result
 */
public Expression or(Object other);

/**
 * Logical NOT operation
 * @return Boolean expression representing NOT result
 */
public Expression not();

Logical Examples:

// Complex filtering conditions
Expression validOrder = $("amount").isGreater(lit(0))
    .and($("status").isEqual(lit("confirmed")))
    .and($("customer_id").isNotNull());

Expression weekendOrEvening = $("day_of_week").in(lit("Saturday"), lit("Sunday"))
    .or($("hour").isGreaterOrEqual(lit(18)));

Expression notCancelled = $("status").isNotEqual(lit("cancelled"));

String Operations

Text manipulation and pattern matching operations.

// Case conversion
public Expression upperCase();
public Expression lowerCase();
public Expression initCap();

// String manipulation
public Expression substring(int start);
public Expression substring(int start, int length);
public Expression trim();
public Expression ltrim();
public Expression rtrim();
public Expression repeat(int times);
public Expression reverse();

// String operations
public Expression concat(Object... others);
public Expression length();
public Expression charLength();
public Expression position(String substring);
public Expression overlay(String replacement, int start);
public Expression overlay(String replacement, int start, int length);

// Pattern matching
public Expression like(String pattern);
public Expression notLike(String pattern);
public Expression similar(String pattern);
public Expression notSimilar(String pattern);
public Expression rlike(String pattern);

// String splitting and parsing
public Expression split(String delimiter);
public Expression regexpReplace(String pattern, String replacement);
public Expression regexpExtract(String pattern);
public Expression regexpExtract(String pattern, int group);

String Examples:

// Text processing
Expression cleanName = $("name").trim().upperCase();
Expression firstName = $("full_name").split(lit(" ")).at(lit(0));
Expression emailDomain = $("email").regexpExtract(lit("@(.+)"), lit(1));

// Pattern matching
Expression gmailUsers = $("email").like(lit("%@gmail.com"));
Expression phoneNumbers = $("phone").rlike(lit("\\d{3}-\\d{3}-\\d{4}"));

// String construction
Expression fullAddress = $("street").concat(lit(", ")).concat($("city")).concat(lit(", ")).concat($("state"));

Temporal Operations

Date, time, and timestamp manipulation functions.

// Current time functions
public static Expression currentTimestamp();
public static Expression currentDate();
public static Expression currentTime();
public static Expression localTimestamp();
public static Expression localTime();

// Extraction functions
public Expression year();
public Expression quarter();
public Expression month();
public Expression week();
public Expression dayOfYear();
public Expression dayOfMonth();
public Expression dayOfWeek();
public Expression hour();
public Expression minute();
public Expression second();

// Date/time arithmetic
public Expression plus(IntervalUnit unit, int amount);
public Expression minus(IntervalUnit unit, int amount);
public Expression plus(Expression interval);
public Expression minus(Expression interval);

// Conversion functions
public Expression toDate();
public Expression toTime();
public Expression toTimestamp();
public Expression toTimestampLtz();

// Formatting functions
public Expression dateFormat(String format);
public Expression timestampDiff(TimePointUnit unit, Expression other);

Temporal Examples:

// Date extraction
Expression orderYear = $("order_date").year();
Expression orderMonth = $("order_date").month();
Expression orderHour = $("created_at").hour();

// Date arithmetic
Expression oneWeekLater = $("start_date").plus(IntervalUnit.WEEK, 1);
Expression ageInYears = currentDate().minus($("birth_date")).dividedBy(lit(365));

// Time-based filtering
Expression recentOrders = $("order_date").isGreater(currentTimestamp().minus(IntervalUnit.DAY, 7));
Expression businessHours = $("created_at").hour().between(lit(9), lit(17));

// Date formatting
Expression formattedDate = $("order_date").dateFormat(lit("yyyy-MM-dd"));

Array Operations

Operations for working with array-typed columns.

// Array access
public Expression at(Object index);
public Expression cardinality();

// Array manipulation
public Expression element();
public Expression slice(int start, int end);

// Array predicates
public Expression exists(Expression predicate);
public Expression forall(Expression predicate);

Array Examples:

// Array element access
Expression firstTag = $("tags").at(lit(0));
Expression tagCount = $("tags").cardinality();

// Array operations
Expression hasImportantTag = $("tags").exists($("item").like(lit("important%")));
Expression recentTags = $("tags").slice(lit(0), lit(5));

JSON Operations

JSON data processing and extraction functions.

// JSON extraction
public Expression jsonValue(String path);
public Expression jsonValue(String path, JsonValueOnEmptyOrError onEmpty, 
                          JsonValueOnEmptyOrError onError);
public Expression jsonQuery(String path);
public Expression jsonExists(String path);

// JSON type checking
public Expression isJson();
public Expression isJson(JsonType type);

JSON Examples:

// JSON data extraction
Expression customerName = $("json_data").jsonValue(lit("$.customer.name"));
Expression orderItems = $("order_json").jsonQuery(lit("$.items[*]"));
Expression hasShipping = $("order_json").jsonExists(lit("$.shipping"));

// JSON validation
Expression validJson = $("data").isJson();
Expression jsonObject = $("data").isJson(JsonType.OBJECT);

Conditional Expressions

Conditional logic and case statements.

/**
 * Simple CASE WHEN expression
 * @param condition Boolean expression
 * @param thenValue Value when condition is true
 * @param elseValue Value when condition is false
 * @return Conditional expression
 */
public static Expression when(Expression condition, Object thenValue, Object elseValue);

/**
 * Multi-branch CASE expression
 * @param condition First condition
 * @param thenValue Value for first condition
 * @return CaseExpression for chaining additional when clauses
 */
public static CaseExpression when(Expression condition, Object thenValue);

public interface CaseExpression extends Expression {
    public CaseExpression when(Expression condition, Object thenValue);
    public Expression otherwise(Object elseValue);
}

/**
 * Null coalescing - return first non-null value
 * @param expressions Expressions to check in order
 * @return First non-null expression value
 */
public static Expression coalesce(Expression... expressions);

/**
 * Null-safe equality check
 * @param left Left expression
 * @param right Right expression
 * @return Boolean indicating null-safe equality
 */
public static Expression nullIf(Expression left, Expression right);

Conditional Examples:

// Simple conditional
Expression priceCategory = when($("price").isGreater(lit(100)), lit("expensive"), lit("affordable"));

// Multi-branch case
Expression ageGroup = when($("age").isLess(lit(18)), lit("minor"))
    .when($("age").isLess(lit(65)), lit("adult"))
    .otherwise(lit("senior"));

// Null handling
Expression displayName = coalesce($("nickname"), $("first_name"), lit("Anonymous"));
Expression cleanValue = nullIf($("value"), lit(""));

Aggregate Functions

Functions for computing aggregations (used with groupBy).

// Count functions
public Expression count();
public Expression countDistinct();

// Numeric aggregations
public Expression sum();
public Expression avg();
public Expression min();
public Expression max();
public Expression stddev();
public Expression variance();

// String aggregations
public Expression concat(String delimiter);
public Expression listAgg();
public Expression listAgg(String delimiter);

// Collection functions
public Expression collect();
public Expression mode();

Aggregate Examples:

// Numeric aggregations
Table orderSummary = orders
    .groupBy($("customer_id"))
    .select($("customer_id"),
            $("amount").sum().as("total_spent"),
            $("order_id").count().as("order_count"),
            $("amount").avg().as("avg_order_value"));

// String aggregations
Table customerTags = orders
    .groupBy($("customer_id"))
    .select($("customer_id"),
            $("product_category").listAgg(lit(", ")).as("categories"));

Window Functions

Functions for window-based calculations (used with window specifications).

// Ranking functions
public Expression rowNumber();
public Expression rank();
public Expression denseRank();
public Expression percentRank();

// Value functions
public Expression lag(int offset);
public Expression lag(int offset, Object defaultValue);
public Expression lead(int offset);
public Expression lead(int offset, Object defaultValue);
public Expression firstValue();
public Expression lastValue();
public Expression nthValue(int n);

Window Function Examples:

// Ranking within groups
Table rankedProducts = sales
    .window(Over.partitionBy($("category")).orderBy($("sales").desc()).as("w"))
    .select($("product"), $("category"), $("sales"),
            $("sales").rank().over($("w")).as("sales_rank"));

// Time series analysis
Table timeSeriesData = events
    .window(Over.partitionBy($("user_id")).orderBy($("timestamp")).as("w"))
    .select($("user_id"), $("value"), $("timestamp"),
            $("value").lag(1).over($("w")).as("previous_value"));

Install with Tessl CLI

npx tessl i tessl/maven-org-apache-flink--flink-table-api-java-uber

docs

connectors.md

data-types.md

datastream-bridge.md

expressions.md

functions.md

index.md

sql-gateway.md

table-operations.md

tile.json