Skip to main content
The RAW resource type stores unstructured data. RAW databases and tables hold source data in its original form to reduce source system queries for the same data for different use cases and minimize the data extractors’ logic. This makes it easy to re-run transformations on data in the cloud. Alternatively, you can transform the data in your cloud and bypass CDF RAW to integrate the data directly into the CDF data model.

Data structure

RAW uses a hierarchical structure: databases contain tables, and tables contain rows. Each row has a unique key and a JSON value. You can query by key or list rows within a table. There are no enforced schemas; you define the structure your data needs. A CDF project can have a variable number of RAW databases with a variable number of tables with a variable number of key-value objects. You can query the keys using the RAW API and post a maximum of 1000 databases per request.

Common use case

RAW is commonly used as a staging area for data before it’s transformed and loaded into CDF’s structured resources. Use the RAW data to spot anomalies in your tabular data or identify which transformations you need to do on your data before ingesting it into the CDF data model. Navigate to Manage staged data in the CDF portal application to view the ingested tabular data in a table or as a data profiling report in the RAW explorer.

Primary row key

When you insert rows in a RAW table, you must set a primary row key that only contains unique values. You can’t change this key when it’s set. In the RAW explorer, you can select Generate a new key column to generate a unique key per row. If you’re unsure which primary key to use and want to simulate different scenarios, upload the same file to different tables using separate tabs in your browser.
You may risk losing data if you use a non-unique column as the primary key.

Insert rows

One request inserts at most 10,000 rows. A row key can be at most 1024 characters. Columns together can be at most 5 MiB. One column name and one column value can each be at most 2,621,440 characters. For a larger value, upload a file and store a reference in the row. Insert replaces the columns of a row when the row key already exists. A failed request can leave a partial write. Retry the request. The call inserts and updates. lastUpdatedTime changes only when the new column JSON differs from the stored JSON.

Cursors

GET .../cursors returns cursors for a last-updated time range so you can read rows in parallel. Pass each cursor to read rows. minLastUpdatedTime and maxLastUpdatedTime are ignored when a cursor is set.

Rate and concurrency limits

For Raw rate and concurrency limits, see API rate limits.
Last modified on November 2, 2026