| Invalid SQL syntax | The query couldn’t be parsed. | Check quoting, commas, and parentheses. Remember that string literals use single quotes. |
Only SELECT queries are allowed (invalid_analytics_query_type) | The statement is not a SELECT. | Analytics is read-only; there is no INSERT, SHOW, or DESCRIBE. Columns are listed on the table pages. |
| Analytics queries must contain exactly one statement | Two statements, or a trailing statement after a semicolon. | Send one SELECT per request. |
| Query must have a FROM clause | SELECT 1 or a bare expression. | Every query reads from a public table. |
Access to table ‘x’ is not allowed (invalid_analytics_table) | A table that isn’t one of the public names, a system or information_schema table, or a typo in a public name. | Use the public names on the overview, such as key_verifications_v1. |
Function ‘x’ is not allowed (invalid_analytics_function) | A function that isn’t allowed, including row_number, rank, and every -Merge function. | Rewrite with an allowed function; see Analytics query language. For latency, aggregate the raw table. |
| SETTINGS clauses are not allowed | A SETTINGS clause. | Remove it. Execution limits are fixed per workspace. |
| Table-backed IN expressions are not supported | x IN some_table. | Write x IN (SELECT x FROM some_table). |
| Analytics query projects too many columns | More than 64 selected columns across all SELECTs. | Select fewer columns or split the query. |
| Analytics query is too complex | More than 2,000 parsed expression nodes. | Simplify; long IN lists are the usual culprit. |
| Analytics query exceeds the maximum length | The query text is over 16 KiB. | Shorten it, usually by replacing a long IN list with a subquery. |
| The query reads a column that is not available | SELECT * on gateway_requests_v1 or runtime_logs_v1. Only their documented columns can be read. | Name the columns you want instead of *. They are listed on Gateway request and runtime log analytics. |
Cannot query data older than N days (query_range_exceeds_retention) | A lower bound on time is before your retention window. | Move the bound forward. The detail names the earliest allowed date. Retention per plan is on Analytics restrictions and quotas. |