with one click
autoload
Automatically infer schemas and load data from the incoming directory
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Automatically infer schemas and load data from the incoming directory
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | autoload |
| description | Automatically infer schemas and load data from the incoming directory |
Watches the incoming directory, automatically infers schemas for new data files, generates the corresponding YAML table definitions, and loads the data into the data warehouse. This is the quickest way to get data loaded: it combines schema inference and loading in a single step.
starlake autoload [options]
--domains <value>: Comma-separated list of domains to watch (default: all)--tables <value>: Comma-separated list of tables to watch (default: all)--clean: Overwrite existing mapping/schema files before starting--accessToken <value>: Access token for authentication (e.g. GCP)--scheduledDate <value>: Scheduled date for the job, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ--options k1=v1,k2=v2: Substitution arguments passed to the watch job--reportFormat <value>: Report output format: console, json, or html_config.sl.yml and {table}.sl.yml files in metadata/load/The incoming directory is defined in application.sl.yml or env.sl.yml:
# metadata/env.sl.yml
version: 1
env:
incoming_path: "{{SL_ROOT}}/datasets/incoming"
AutoLoad creates table definitions like the following in metadata/load/{domain}/:
# Auto-generated: metadata/load/starbake/_config.sl.yml
version: 1
load:
name: "starbake"
metadata:
directory: "{{incoming_path}}/starbake"
# Auto-generated: metadata/load/starbake/orders.sl.yml
version: 1
table:
name: "orders"
pattern: "orders_.*.json"
attributes:
- name: "customer_id"
type: "long"
- name: "order_id"
type: "long"
- name: "status"
type: "string"
- name: "timestamp"
type: "iso_date_time"
metadata:
format: "JSON_FLAT"
encoding: "UTF-8"
array: true
writeStrategy:
type: "APPEND"
The loadStrategyClass in application.sl.yml controls how files are ordered for processing during autoload:
| Strategy Class | Description | Ordering |
|---|---|---|
ai.starlake.job.load.IngestionTimeStrategy | Load by file modification time | Oldest first |
ai.starlake.job.load.IngestionNameStrategy | Load by lexicographical filename order | Alphabetical |
Configuration:
# metadata/application.sl.yml
application:
loadStrategyClass: "ai.starlake.job.load.IngestionNameStrategy"
Implement ai.starlake.job.load.LoadStrategy interface:
package com.mycompany.starlake
import ai.starlake.job.load.LoadStrategy
import ai.starlake.storage.StorageHandler
import org.apache.hadoop.fs.Path
import java.time.LocalDateTime
object CustomLoadStrategy extends LoadStrategy with StrictLogging {
def list(
storageHandler: StorageHandler,
path: Path,
extension: String = "",
since: LocalDateTime = LocalDateTime.MIN,
recursive: Boolean
): List[FileInfo] = {
// Custom file ordering logic
???
}
}
application:
loadStrategyClass: "com.mycompany.starlake.CustomLoadStrategy"
starlake autoload
starlake autoload --domains starbake
starlake autoload --domains starbake --tables orders,products
Overwrite existing schema files and re-infer from data:
starlake autoload --clean
starlake autoload --reportFormat json
Manage GizmoSQL processes: start, stop, list, and stop-all DuckLake-backed SQL servers
Create or modify database connections in application.sl.yml
Manage Quack DuckDB query servers exposing DuckLake over a thin remote protocol — serve (foreground), start/stop/list/stop-all (background)
Data quality expectations syntax, built-in macros, and validation patterns
Apply Row Level Security (RLS) and Column Level Security (CLS) policies
Run SQL or Python transformation tasks