← ClaudeAtlas

exasol-udfslisted

Exasol User Defined Functions (UDFs) and Script Language Containers (SLCs). Covers `CREATE SCRIPT`, SCALAR and SET functions, variadic scripts with `EMITS(...)` and `default_output_columns`, the `ExaIterator` and `ExaMetadata` APIs, Python, Java, Lua, and R scripts, Lua execute scripts and `pquery`, BucketFS file access, GPU-accelerated UDFs, `ALTER SESSION SET SCRIPT_LANGUAGES` activation, and building custom Script Language Containers with `exaslct`, `exaslpm`, and `packages.yml`.
exasol-labs/exasol-agent-skills · ★ 10 · AI & Automation · score 70
Install: claude install-skill exasol-labs/exasol-agent-skills
# Exasol UDFs & Script Language Containers UDFs extend SQL with custom logic that runs inside the Exasol cluster: per-row transforms, custom aggregation, ML inference against a model in BucketFS, external API calls, and DataFrame batch processing. They execute in a Script Language Container — a Docker-based runtime whose contents you can replace when the default packages are not enough. ## Two Decisions Before Any Route **SCALAR or SET?** | | SCALAR | SET | |---|--------|-----| | **Input** | One row at a time | Group of rows (via GROUP BY) | | **Output** | `RETURNS <type>` (single value) | `EMITS (col1 TYPE, ...)` (zero or more rows) | | **Row iteration** | Not needed | `ctx.next()` loop required | | **SQL usage** | `SELECT udf(col) FROM t` | `SELECT udf(col) FROM t GROUP BY key` | | **Use case** | Per-row transforms | Aggregation, ML batch predict, multi-row emit | **Which language?** | Language | Startup | Best For | Expandable via SLC? | |----------|---------|----------|---------------------| | **Python 3** (3.10 or 3.12) | ~200ms | ML, data science, pandas, string processing | Yes | | **Java** (11 or 17) | ~1s | Enterprise libs, type safety, Virtual Schema adapters | Yes | | **Lua 5.4** | <10ms | Low-latency transforms, row-level security | No (natively compiled into Exasol) | | **R** (4.4) | ~200ms | Statistical modeling, R model deployment | Yes | ## Routing Algorithm Choose the narrowest matching route. Several often apply — a Python UDF that reads a model need