UNIVCONV · Tech Blog
New Feature Query Engine Data Filtering

Introducing the Query Button: For/Where Filtering, Right in the Conversion Workflow

Filter records before they move — not after. UNIVCONV's new Query button puts powerful For/Where logic directly in your hands, without writing a line of SQL.

📅 August 9, 2026 ✍️ The UNIVCONV Engineering Team ⏱ 5 min read

Data conversion has always been a two-step dance: convert everything, then filter. Today that changes. UNIVCONV's new Query button lets you define For (iteration) and Where (condition) criteria inline — so only the records you actually want flow through to your output. Fewer rows processed, faster jobs, cleaner destinations.

Why Inline Querying Changes Everything

The traditional workaround for selective data conversion is painful: export the full dataset, load it into a separate query tool, filter it there, save the result to a temp file, then feed that temp file into your converter. That's four extra steps, four extra failure points, and four extra things to document when someone asks why the output doesn't match the source.

With the Query button, filtering becomes part of the conversion definition itself — stored in the same job file, visible in the same UI, executed in the same engine pass. There is no temp file, no intermediate step, and no context switching.

Two Query Modes: For and Where

The Query dialog exposes two distinct filtering modes that correspond to two classic paradigms in data processing. You can use either independently or combine them in a single query.

FOR

For — Iteration Scope

Defines the universe of records to process. The For clause steps through a field range or value set, including only records that fall within it. Think of it as a pre-filter that limits which rows the engine even looks at.

FOR <Field> = <Value>

Ideal for processing a specific customer segment, date range, region, or category without touching the rest of the dataset.

WHERE

Where — Conditional Filter

Evaluates a boolean expression against each record. Only rows where the expression resolves to true are written to the output. Supports compound logic with .AND. and .OR. operators.

WHERE <Field> = <Calculated Value>

Perfect for derived comparisons, threshold checks, multi-field validations, and any condition that isn't a simple range.

Syntax Reference

The query language is intentionally concise. Here are the building blocks:

Pattern Example Meaning
Simple equality FOR Status = "Active" Include only records where Status is "Active"
Numeric threshold WHERE Balance > 0 Records with a positive balance
Compound AND WHERE Region = "East" .AND. Amount > 5000 Eastern region records over $5,000
Compound OR WHERE Status = "New" .OR. Status = "Pending" Records in either status
Calculated value WHERE UnitPrice * Qty > 1000 Line items whose extended price exceeds $1,000
Date comparison WHERE OrderDate >= {2026-01-01} Orders placed this year
Combined FOR + WHERE FOR Dept = "Sales" WHERE Quota >= Target * 0.9 Sales reps within 10% of quota

The Visual Query Builder

You never have to type the syntax if you don't want to. Clicking Query in the toolbar opens a visual builder where you pick fields, operators, and values from dropdowns. The expression assembles itself as you go.

Query Builder — Visual Mode
Clause WHERE
Region = "Northeast"
.AND.
Revenue > Target * 1.1
→ WHERE Region = "Northeast" .AND. Revenue > Target * 1.1

The generated expression is fully editable in the text pane alongside the builder — switch modes freely at any time. The builder and the text pane stay in sync.

Using the Query API

For scripted or automated conversions, pass the query as a string in the job definition. Both for and where keys are optional and can be used independently:

// UNIVCONV API — Query example (Python) import univconv job = univconv.ConversionJob( input = { "type": "dbf", "path": "./ORDERS.DBF" }, output = { "type": "csv", "path": "./output/filtered_orders.csv" }, query = { "for": "Status = 'O'", # Open orders only "where": "Amount > Cost * 1.2" # 20%+ margin } ) result = job.run() print(f"Converted {result.rows_written} rows " f"({result.rows_skipped} skipped by query)")

Performance: Filter Early, Convert Less

The Query engine is evaluated at read time, before any transformation, type coercion, or output buffering occurs. Records that don't match the query are discarded at the source layer — they never enter the conversion pipeline at all.

On a typical 500,000-row .dbf file with a query that selects 15% of records, internal benchmarks show a 62% reduction in total conversion time compared to converting the full file and filtering afterward. For large SQL tables, the FOR/WHERE clause is pushed down as a native WHERE predicate — the database does the filtering, not UNIVCONV.

⚡

Available Now in UNIVCONV v4.2

The Query button ships today in UNIVCONV v4.2, available on all plans. Look for the "Query" button in the main toolbar between the Field Map and Transform controls. The visual builder and direct-text modes are both available immediately, with no configuration needed.

Start Filtering Smarter

Update to UNIVCONV v4.2 and give the Query button a spin. Stop converting entire datasets when you only need a slice — process precisely what you need, nothing more.

Download UNIVCONV v4.2