Capabilities / Connected data

Import a CSV as queryable data

Upload a CSV, review column types, follow validation, and use the published connection in a report.

X4 Tech SolutionsUpdated October 30, 20267 min read

Import a CSV to create a queryable data connection for your report. Unity reads the file, lets you review column types, validates the data, and publishes a dataset that the assistant and SQL tools can query.

Use Upload File in the report toolbar for this workflow. To give the assistant a template, workbook, or supporting document, use Attach reference files in chat instead.

Import your first CSV

  1. Open a report with editing access.
  2. Click Upload File in the report toolbar.
  3. Drop a non-empty .csv file into the dialog or choose it from your computer.
  4. Keep the dialog open while the browser uploads the file.
  5. Review the preview. Use Import as to correct each column's type.
  6. Start the import and wait for Connection ready.
  7. Select the resulting connection, review its model, and ask the assistant to analyze it.
Example prompt
Inspect the imported dataset and its column types. Summarize its date
coverage, row grain, and any fields that need clarification. Then build
an HTML page with summary metrics and a searchable detail table.

Import an attached CSV with an AI agent

An AI agent working through Unity's tools imports a CSV file attached to the report (AttachReportFile, or one you attached) with ImportCsvFile, through the same profile and import, with the suggested types:

  1. ImportCsvFile with the file's ID starts the import and waits up to 15 seconds for it. It returns an upload ID and the status; while the file is still queued or processing, calling again with the upload ID waits again.
  2. If a suggested type fails, the status is preview with the columns and the error; called with the upload ID and columnTypes, it retries the import with those types.
  3. When the import is ready, it returns the new file connection, already attached to the report with its table modeled, and the report version the import made (reportVersion). firstSpellings gives, per column, the spellings stored as an earlier spelling and the rows they were in, such as {"Place": {"spellings": 2, "rows": 130000}}.

The table is named after the file, or the name the agent gives (tableName): characters other than letters, digits and _ become _, so "Regions W1-5" becomes Regions_W1_5. If the report already has a query of that name, the new one is named as a copy: Regions_W1_5 (2), queried as regions_w1_5_2.

Only the person who started an upload can continue it, in the report it started in. Files over a few megabytes are better uploaded in Unity, since an agent sends a file's bytes in its tool call.

Importing a file does not establish what its business measures mean. Review identifiers, date interpretation, and reusable calculations before relying on an analysis.

File requirements

PropertySupported value
File typeCSV. Convert other tabular formats to CSV for this importer.
File sizeUp to the limit shown in the upload dialog; the default is 2 GB (2,048 MiB).
RowsNo fixed row-count cap. Available processing memory, disk, and execution budgets still apply.
ColumnsFrom 1 to 200.
HeadersNon-empty names, at most 255 characters each, unique after normalization.
DataAt least one data row; every row must have the expected number of values.

The reader handles UTF-8, BOM-marked UTF-16, and a Windows-1252 fallback, and detects common CSV delimiter conventions. A malformed row, unsupported value, or exceeded limit produces an error; the importer does not quietly publish a partial dataset as complete.

Review column types

The preview shows original column names, the normalized names used by the model, sample values, and the proposed type. Search with Find a column when the file has many fields.

Import typeUse for
TextNames, codes, postal codes or identifiers with leading zeros. Values Unity's text rule treats as equal (case, width, trailing spaces) keep the first spelling in the file, so IDs that differ only by case become one (as in Power BI's import).
Whole numberIntegers within the supported 64-bit range.
DecimalExact decimal values within the supported 38-digit precision.
True / falseBoolean values such as true/false, yes/no, or 1/0.
Date · ISODates written as YYYY-MM-DD.
Date / time · ISOISO date and time values.
Date · US / Date · EUExplicit MM/DD/YYYY or DD/MM/YYYY interpretation.
Date / time · US / EUDate and time with the corresponding month/day ordering.

For example, 03/04/2026 is ambiguous until you choose a date convention. An account code such as 00123 should generally stay Text.

Suggested types come from a preview. The import validates all rows afterward, so a value beyond the preview can still fail conversion. Correct the reported row or choose a compatible type and retry.

Follow import progress

State shown in the workflowWhat to do
Browser uploadingKeep the dialog open. Closing it interrupts the transfer.
Reading your fileWait for the preview; server processing can continue with the dialog closed.
File uploaded / type reviewOpen the review and confirm the column types.
Preparing your connectionWait for validation and publication. The status can show rows validated.
Connection readyUse the new connection for analysis.
Check your uploadRead the specific error and restart or correct the file.

A report status message lets you reopen an unfinished import. The upload dialog lists the report's unfinished imports with their status, including ones an AI agent started; Open and Cancel import appear on the ones you started. Cancel import stops an unfinished import, even after you lose edit access to the report; deleting the report cancels its unfinished imports. Once it is ready, manage the resulting connection through the data controls.

Values Unity's text rule treats as equal (case, width, trailing spaces: North, NORTH, *North *) are one value in Unity, as in Power BI. Like Power BI's import, Unity stores each such value with its first spelling in the file, so every row and group shows North. When this happens, the ready message says, per column, how many spellings were relabelled and in how many rows ("Place, 2 spellings relabelled in 130,000 rows").

Large imports run in a separate processing worker. Healthy conversion can continue beyond a minute; a stalled conversion or one exceeding its configured safety/resource budget reports an error. The ready notification leaves chat controls available, and dismissing it does not remove the imported connection.

Query the imported data

The published dataset is stored as typed Parquet separately from chat attachments and queried by Unity's file connector using DuckDB. The original CSV is retained in private dataset storage. The connection can be attached to reports; each report owns its own model. Use its actual model entity and field names in SQL.

Millions of input rows can contribute to a small aggregate without being sent to your browser or the assistant. Detail tables retrieve result windows; complete query responses still have output limits. See Query processing.

The imported dataset is a snapshot of the uploaded file. There is no automatic synchronization with the file on your computer. A subsequent import creates new imported data; existing visuals retain the connection they were saved against.

Troubleshoot an import

ErrorResolution
Duplicate normalized column namesRename conflicting headers in the source file.
Wrong number of values in a rowCorrect delimiters, quoting, or the malformed row.
Value cannot be convertedChange the column type or correct the reported value.
Numeric precision exceeds the limitChoose Text when preserving the exact original value matters.
Upload stoppedSelect the file again and keep the dialog open during transfer.
File size or column limit exceededReduce or split the source before importing.
Processing resource limit or stallRead the error; retry when capacity is available or split the file.

See Semantic models to define calculations and HTML visuals and data to use the result in a live report page.

Questions about your environment? Contact us.