Pair your devices with a code and playback position follows you: pause on this device, hit resume on the other. Position is saved to the site every minute and on pause.
Open this panel on your other device and enter the same code.
Starts this lesson and continues through 19 more to the end of the course.
When you tell AWS Support "we can't get our data in", the first thing a support engineer does is work out which of about six ceilings you've hit. If you can name it yourself, the case skips straight to the useful part. If you can't, you spend a round trip or three establishing it.
More importantly: some of these quotas are adjustable and some are not. That single fact decides whether the correct response is "open a limit-increase case" or "go redesign the dataset". Getting it wrong costs weeks, and it is the single most common way teams waste time on this service.
There are two authoritative sources and you should treat them as such:
Blog posts are not a source for a quota. Neither is this page, six months from now.
Verbatim from the data source quotas page (verified 2026-08-09):
| Quota | Value | Adjustable |
|---|---|---|
| Rows per dataset — Standard edition | 25,000,000 | ❌ |
| Size per dataset — Standard edition | 25 GB | ❌ |
| Rows per dataset — Enterprise edition | 2,000,000,000 | ❌ |
| Size per dataset — Enterprise edition | 2 TB | ❌ |
| Columns per file | 2,000 | ❌ |
| Characters per column name | 127 Unicode | ❌ |
| Characters per field | 2,047 Unicode | ❌ |
| Characters per field — new data prep experience | 65,534 Unicode | ❌ |
| Files per S3 manifest | 1,000 | ❌ |
Two details in that list earn their own paragraphs.
The row limit and the size limit are an OR, not an AND. AWS says so directly:
"In rare cases, if you're ingesting large rows into SPICE, you might reach the quota for gigabytes per dataset before you reach the quota on rows. The size is based on the SPICE capacity the data occupies after ingestion into SPICE."
So a 900-million-row dataset with wide text columns can fail on 2 TB while sitting at 45% of the row limit. Whichever ceiling you touch first is the one that stops you. And note "the SPICE capacity the data occupies after ingestion" — it's logical size from lesson 1, not source size.
The field-length quota has two values and which one applies depends on how the dataset was built. 2,047 characters normally; 65,534 "if you use the new data preparation experience to create your SPICE dataset". That's a thirty-two-fold difference hanging on which UI created the dataset. If you are truncating long text — JSON blobs, log lines, free-text notes — this is the first thing to check.
⚠️ Row-level security does not buy you a smaller footprint. "All quotas apply to SPICE datasets with row-level security, as well." An RLS dataset is stored whole, and filtered at query time. If ten tenants share one 500 GB dataset, that is 500 GB, not ten smaller slices.
This is the distinction the whole module is built around.
| Per-dataset quota | Account + Region capacity | |
|---|---|---|
| Example value | 2 billion rows / 2 TB | whatever you have bought |
| Set by | The service | Your purchasing |
| Adjustable | No | Yes — buy more |
| Correct response when hit | Redesign: split, filter, aggregate, or go direct query | Buy capacity, or free some |
| Support case useful? | No | Only for billing questions |
If a single dataset needs more than 2 billion rows or 2 TB, no support case will help you. The answer is architectural, and lesson 5 covers the options.
From the Service Quotas table in the AWS General Reference (verified 2026-08-09):
| Quota name | Default | Adjustable |
|---|---|---|
API_CREATE-INGESTION: Calls per 24 hour period from Enterprise edition |
32 per Region | No |
API_CREATE-INGESTION: Calls per 24 hour period from Standard edition |
8 per Region | No |
The description is precise about the window: "The maximum number of calls to the createIngestion API function in a floating 24-hour window. The time period is measured starting 24 hours before the current date and time."
Floating, not calendar. There is no midnight reset to wait for. If you burn 32 calls between 09:00 and 10:00, you get one back at 09:00 tomorrow, then another, and so on.
The CreateIngestion API page states the same limit in different words:
"You can manually refresh datasets in an Enterprise edition account 32 times in a 24-hour period. You can manually refresh datasets in a Standard edition account 8 times in a 24-hour period." — CreateIngestion
⚠️ A live documentation ambiguity — and it matters. The API page says "manually refresh". The Service Quotas table says "calls to the createIngestion API function". Neither page states whether a scheduled refresh consumes the quota.
Do not guess, and do not accept a blog post's answer. The API gives you RequestSource with values
MANUAL and SCHEDULED on every ingestion — lesson 3 shows you how to list your own ingestions and
settle it empirically for your account. If it turns out to matter for a design you're committing to,
that is a legitimate, well-formed question to put to AWS Support, and one they can answer in a
sentence.
You are designing a near-real-time dashboard. You want a 15-minute refresh. That is 96 ingestions a day, and the quota is 32 — three times over.
Your options, in the order you should consider them:
CreateIngestion quota is exactly
the ambiguity above — measure it.Because it is not adjustable, "we'll ask AWS to raise it" is not on the list.
Different engine, different ceilings (Data source quotas):
| Quota | Value |
|---|---|
| Columns per dataset | 2,000 |
| Characters per column name | 127 Unicode |
| Visual generation timeout | 2 minutes |
| Dataset sample / preview timeout | 45 seconds |
| Source database timeouts | Whatever the engine enforces |
⚠️ The 2-minute timeout does not always stop the query. This is one of the most operationally important sentences in the entire user guide:
"not all database drivers react to the 2-minute timeout, for example Amazon Redshift. In these cases, the query runs for as long as it takes for the response to return, which can result in long-running queries on your database."
Read that again in terms of what your DBA sees. A user opens a dashboard, the visual times out after two minutes and shows an error — and the query keeps running on Redshift, consuming a WLM slot, until it finishes on its own. Twenty users refreshing a slow dashboard can pin a cluster with queries that nobody is waiting for any more.
AWS's remedy is to cancel from the database side: for Redshift, see Canceling a query and workload management.
Design rule: if you run direct query against Redshift, put Quick Sight in its own WLM queue with a statement timeout. Do not rely on the 2-minute client-side timeout to protect the cluster, because for Redshift it doesn't.
All values below are per Region, verbatim from the AWS General Reference (verified 2026-08-09). Every one of them is marked not adjustable.
| Quota | Default |
|---|---|
| Data Prep: fields per dataset | 2,000 |
| Calculated field expression length | 250,000 characters |
| Query timeout for visuals | 120 seconds |
| Maximum wait for a dataset preview | 45 seconds |
| Custom actions per visual | 10 |
| Custom action name length | 256 characters |
| URL action hyperlink length | 2,048 characters |
| Display items per sheet control | 1,000 |
| Characters per specified control values | 200,000 |
| Email aliases per group for email reports | 5,000 |
The fields per dataset row carries a note worth quoting, because it describes a workaround rather than a hard stop:
"File imports and query result sets can contain more than 2,000 columns. However, you must edit the dataset settings and manually exclude fields until there are less than 2,000 selected or included."
And the email one is a genuine silent failure: "If you try to send reports to larger groups, the report fails." Not truncates — fails.
The same table now carries quotas for the newer Quick Suite capabilities. A few, for orientation (covered properly in Q9):
| Quota | Default | Adjustable |
|---|---|---|
| Quick Automate — maximum automations | 1,000 | ✅ |
| Quick Automate — automation groups | 200 | ✅ |
| Quick Automate — concurrent executions per trigger | 20 | ❌ |
| Quick Automate — maximum workflow execution time | 48 hours | ❌ |
| Maximum total data capacity of an index | 60,000 MB | ❌ |
| Reference documents per chat agent | 10 | ❌ |
| Resources per space | 100 | ❌ |
Note the pattern: the Quick Automate count quotas are adjustable; the runtime quotas are not. That's a useful heuristic across the whole table — AWS will sell you more objects far more readily than it will change engine behaviour.
Never from memory. Never from here.
# Is there a Service Quotas entry, and what is my applied value?
aws service-quotas list-service-quotas \
--service-code quicksight \
--region us-east-1 \
--query 'Quotas[].{Name:QuotaName,Value:Value,Adjustable:Adjustable}' \
--output table
# Applied value (accounts for any increase already granted)
aws service-quotas list-aws-default-service-quotas \
--service-code quicksight --region us-east-1 --output table
⚠️ The service code is quicksight, not quick. The rename did not touch API or Service Quotas
namespaces. The console URL is still
console.aws.amazon.com/servicequotas/home/services/quicksight/quotas.
Note also that not every documented limit appears in Service Quotas. The per-dataset row and size quotas (2 billion / 2 TB) are documented in the user guide but are not entries in the quota table — which is consistent with them being non-adjustable. If it's not in the table, you cannot request an increase for it.
CreateIngestion calls per Region, not per dataset. Four datasets each
refreshed hourly is 96 calls against a 32-call quota. Splitting multiplies consumption.list-service-quotas command live and let them see that 2 billion rows is not
in the table. The absence is the lesson.