Guides

Upload files for analysis

Upload a tabular file, inspect the imported table, and check an answer against the source.

Have a CSV, spreadsheet or other tabular file you want to explore? Upload it to create a table in your workspace's uploads datasource, then ask a question and check the result against the file.

Choose a supported file

FormatExtensionsWhat to check
Delimited text.csv, .tsvUse a consistent header and record structure. Check inferred types after import.
JSON.json, .jsonl, .ndjsonUse structured records and check how fields become columns.
Parquet.parquetCheck the source schema and row count.
Excel.xlsxPut the intended data on the first worksheet, with column names in its first row.

Excel imports the first worksheet only and uses its first row as headers. To import another sheet, save a workbook with that sheet first. Convert legacy .xls files to .xlsx before uploading.

Use data approved for the workspace. An upload with the same resulting table name replaces the existing table's data, so check the filename before importing. Querio makes the table name from the filename without its extension: it lowercases letters and turns runs of punctuation or spaces into hyphens. For example, Upload Check.csv and upload_check.json both target upload-check.

Try a small example

Save this synthetic data as upload-check.csv. If upload-check already exists in your workspace, use another filename and adjust the query below.

order_id,region,amount
1,North,10
2,South,20
3,North,5

Upload it

  1. Open the workspace's Context page. In the Datasources sidebar header, select Upload files. The same action appears when the datasource list is empty.
  2. Drop your file into the dialog or select browse. Check the selected names and sizes, and remove any unwanted files.
  3. Select Upload and wait for the result.

You need permission to import data. This action always imports into the workspace's uploads datasource, even if another datasource is selected in Context. It does not load the file into an external database. Storing a file through ordinary workspace file operations is different: it does not create a queryable table. See Files and versions for raw file transfer.

Inspect the imported tables and failed files

When every file succeeds, the dialog closes and shows Files uploaded. Open Context, select uploads, and look under main for each table. Check its columns against the source file. For the example, expect upload-check with order_id, region and amount.

If any file fails, the dialog stays open. Read each file's result: a successful import shows its table name and row count; a failed import shows an error. A batch can have both outcomes. Remove successful files before retrying a corrected file, because sending them again can replace their tables.

Ask a question and check the answer

Open a fresh Explore with uploads selected. For the example, ask:

How many orders and how much total amount does each region have in upload-check? Show the SQL.

Inspect the SQL and result. This query gives you a direct check:

SELECT region, COUNT(*) AS orders, SUM(amount) AS total
FROM "upload-check"
GROUP BY region
ORDER BY region;
regionorderstotal
North215
South120

The table name needs double quotes because it contains a hyphen. Query the table in uploads, not a local path on your computer.

For your own file, compare row counts, column types, nulls and a known total with the original before relying on an answer. Check leading zeros in identifiers, dates and mixed-type columns especially. Querying requires datasource permission and exactly one authorized credential; import permission alone does not grant query access. See Users, roles and groups. Once the result matches, continue with Ask questions and follow up.

Limits and recovery

BoundaryLimit
Source file100 MiB (104,857,600 bytes) per file.
Declared request size100 MiB including multipart overhead. Keep a batch below this total.
Rows10,000,000 per file.
Columns1,024 per file.
Parser time60 seconds per file.

The interface calls the byte limit 100 MB. A file below the byte cap can still fail parsing, memory or record-width checks. Split large data into smaller, distinctly named files when needed.

What happenedWhat to do
One file failed while others succeededCorrect and retry only the failed file. Check successful tables before resending anything.
Unsupported formatExport to an accepted format; changing the extension does not convert the contents.
Size, row, column or time limitReduce or split the data into distinctly named files.
Parsing or type errorCheck headers, quoting, record structure and inconsistent values in the source.
uploads is configured for another connectionAsk a workspace administrator to review the datasource.
Request failed, response was lost, or a table is missingInspect the table and catalog before retrying. A failure does not guarantee that earlier storage or registration was rolled back.
A colleague cannot query the tableCheck their datasource permission and effective credential assignment.
Existing analysis shows old valuesCheck its file target and rerun the query. Saved output is not a fresh read.

Where the imported data lives

Querio converts the source to Parquet at files/<table>.parquet beneath the configured context root, and updates the uploads catalog. With a context root of querio, the example becomes querio/files/upload-check.parquet. The original CSV is not kept as another source file by this import flow. See Datasource provider boundaries for the managed files connection.

The upload targets the workspace's canonical context files. Selecting a working copy does not redirect it there; check the file target when analyzing from a working copy. Replacing a table does not rerun existing notebook cells or refresh their saved results.

Existing scripted imports

The deprecated POST /api/v2/workspaces/<workspace-id>/datasources/uploads/tables endpoint accepts multipart files fields and uses the same import flow. Its response separates successful uploads from errors; inspect both, even after HTTP 200. See the API reference for authentication and API boundaries.

Before sharing an analysis, inspect its saved result and audience. The imported table may contain more detail than a chart shows. Use Share results for sharing controls.

Was this page helpful?

Last updated on October 27, 2026

On this page