> ## Documentation Index
> Fetch the complete documentation index at: https://docs.textql.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Datasets

> Named, reusable data objects that Ana can read, write, and share across threads, playbooks, and dashboards.

## What is a dataset?

A **dataset** is a named, structured data object stored in TextQL. Datasets are the
files and tables that Ana works with — either **uploaded by you** (a CSV of target
accounts, an Excel mapping table) or **generated by Ana** (the result of a query, a
transformed dataframe, an exported table).

Once a piece of data is saved as a dataset, it becomes reusable: the same dataset can
be referenced by name from multiple threads, [playbooks](/core/how-it-works/playbooks),
and [dashboards](/core/how-it-works/dashboards) without re-uploading or re-querying it.

<Note>
  A dataset is the stored data object itself. A dashboard **data source** is a
  configuration that *produces* data for a dashboard (a SQL query, a Python script, an
  ontology query, or an uploaded file). An uploaded file data source is backed by a
  dataset. See [Dashboards → Data Sources](/core/how-it-works/dashboards#data-sources).
</Note>

## Dataset types

| Type          | Description                                                     |
| ------------- | --------------------------------------------------------------- |
| **Tabular**   | Row-and-column data uploaded as CSV, Excel, and similar formats |
| **Dataframe** | Tabular data produced by Ana in the Python sandbox              |
| **Document**  | Uploaded documents (for example, PDFs)                          |
| **Image**     | Uploaded or generated images                                    |
| **Text**      | Plain-text content                                              |

Datasets are organized into **folders** so related data can be grouped and found by
path, and each dataset is **versioned** — saving over an existing dataset creates a new
version rather than overwriting the prior one.

## How Ana uses datasets

* **In a thread.** Attach a dataset to a conversation and Ana can query it directly as
  structured data, rather than reconstructing it from a description.
* **In a playbook.** Attach the lists and lookup tables a playbook depends on so every
  run reads the same source data. See
  [Attaching datasets](/core/get-better-results/constructing-better-playbooks#attaching-datasets).
* **In a dashboard.** A file-backed dashboard data source reads from a dataset, so a
  refresh always pulls the current version.

## Access control

Datasets enforce **object-level access control**. Access to a given dataset is granted
in one of the following ways:

* **Owner.** The member who created a dataset always has access to it.
* **Shared grant.** A dataset can be shared with specific **members or roles**. Reads
  are gated on that grant, so people only see the datasets they have been given access
  to.
* **Public datasets.** Datasets published to the organization are readable by members
  per your role-based access control settings.
* **Derived access.** If you can access a thread or playbook that references a dataset,
  you can read that dataset in the context of that object.

Dataset permissions follow your organization's
[role-based access control](/core/admin/rbac#permission-reference). By default, members can create
and edit their own public datasets; admins can manage datasets across the organization.

<Tip>
  Use private datasets and per-member or per-role sharing for sensitive lists (for
  example, compensation or named-account data) so they are visible only to the people
  who should see them.
</Tip>
