Import a CSV as queryable data
Upload a CSV, review column types, follow validation, and use the published connection in a report.
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
- Open a report with editing access.
- Click Upload File in the report toolbar.
- Drop a non-empty
.csvfile into the dialog or choose it from your computer. - Keep the dialog open while the browser uploads the file.
- Review the preview. Use Import as to correct each column's type.
- Start the import and wait for Connection ready.
- Select the resulting connection, review its model, and ask the assistant to analyze it.
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:
ImportCsvFilewith 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.- If a suggested type fails, the status is
previewwith the columns and the error; called with the upload ID andcolumnTypes, it retries the import with those types. - 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).firstSpellingsgives, 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
| Property | Supported value |
|---|---|
| File type | CSV. Convert other tabular formats to CSV for this importer. |
| File size | Up to the limit shown in the upload dialog; the default is 2 GB (2,048 MiB). |
| Rows | No fixed row-count cap. Available processing memory, disk, and execution budgets still apply. |
| Columns | From 1 to 200. |
| Headers | Non-empty names, at most 255 characters each, unique after normalization. |
| Data | At 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 type | Use for |
|---|---|
| Text | Names, 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 number | Integers within the supported 64-bit range. |
| Decimal | Exact decimal values within the supported 38-digit precision. |
| True / false | Boolean values such as true/false, yes/no, or 1/0. |
| Date · ISO | Dates written as YYYY-MM-DD. |
| Date / time · ISO | ISO date and time values. |
| Date · US / Date · EU | Explicit MM/DD/YYYY or DD/MM/YYYY interpretation. |
| Date / time · US / EU | Date 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 workflow | What to do |
|---|---|
| Browser uploading | Keep the dialog open. Closing it interrupts the transfer. |
| Reading your file | Wait for the preview; server processing can continue with the dialog closed. |
| File uploaded / type review | Open the review and confirm the column types. |
| Preparing your connection | Wait for validation and publication. The status can show rows validated. |
| Connection ready | Use the new connection for analysis. |
| Check your upload | Read 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
| Error | Resolution |
|---|---|
| Duplicate normalized column names | Rename conflicting headers in the source file. |
| Wrong number of values in a row | Correct delimiters, quoting, or the malformed row. |
| Value cannot be converted | Change the column type or correct the reported value. |
| Numeric precision exceeds the limit | Choose Text when preserving the exact original value matters. |
| Upload stopped | Select the file again and keep the dialog open during transfer. |
| File size or column limit exceeded | Reduce or split the source before importing. |
| Processing resource limit or stall | Read 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.