# Auto-completions > The dropdown that opens as you type. It knows where the cursor is in the statement, so the list matches the clause you're in. Source: https://docs.querylab.io/writing-sql/auto-completions/ ## Opening, accepting, dismissing | Action | Key | | ------- | ---------------------------------------------------------------------- | | Open | Appears as you type; `Ctrl Space` opens it anywhere | | Accept | `Tab` or `Enter` | | Move | `↑` `↓` | | Dismiss | `Esc` | The list also opens after a dot, an opening paren, an operator, or a quote (see [value suggestions](https://docs.querylab.io/writing-sql/value-suggestions/)). Ghost text does not show while the list is open. See [ghost completions](https://docs.querylab.io/writing-sql/ghost-completions/). With a ghost model on, a space does not open the list by itself; a letter or `Ctrl Space` does. You can change this under [Choosing a model](https://docs.querylab.io/writing-sql/ghost-completions/#choosing-a-model). ## What's in the list The list changes with the clause the cursor is in. Each kind has its own icon and a short detail on the right. ### Keywords and phrases Multi-word keywords complete as one item: `GRO` gives `GROUP BY`, `LEF` gives `LEFT JOIN`, `ORD` gives `ORDER BY`. ```sql SELECT * FROM `ace-analytics.warehouse.events` GRO ``` On an empty line the list starts with statement keywords, a `SELECT statement` snippet, and functions that match what you've typed: ### Tables After `FROM` and `JOIN`: tables from the projects you've connected, as full `project.dataset.table` paths, plus CTEs defined earlier in the query. Type any part of the path to filter: `events` matches `ace-analytics.warehouse.events`. Dot-by-dot navigation through project → dataset → table is covered in [hierarchical completions](https://docs.querylab.io/writing-sql/hierarchical-completions/). ### Columns Once a table is in the `FROM` clause, its columns appear in `SELECT`, `WHERE`, `GROUP BY`, `ORDER BY`, and `ON`. The detail shows the column's type. ```sql SELECT * FROM `ace-analytics.warehouse.fact_mot_test` WHERE ``` No `FROM` yet means no columns. Write the `FROM` first, or use the ghost text after `SELECT` to fill it in. ### STRUCT fields and ARRAY elements A dot after a STRUCT column lists its fields, one level per dot (see [hierarchical completions](https://docs.querylab.io/writing-sql/hierarchical-completions/#structs)). Without the dot, the list already includes two levels of nested fields (`device.category`, `geo.country`), so you can type `country` and let filtering find `geo.country`. After `UNNEST(event_params) AS p`, `p.` lists the element's fields. ### Functions and signature help Functions complete with their parentheses. Typing `(` or `,` inside a call opens signature help with the current parameter in bold: Gets the number of unit boundaries between two DATE values.{" "} date_part: DAY, WEEK, MONTH, QUARTER, YEAR. Namespaced functions chain the same way as tables: `ML.`, `SAFE.`, `NET.`, `AI.` each open their own list. ### Values Inside a comparison (`WHERE country = '¦'`) the list holds real values from that column, sampled at no cost. That has its own page: [value suggestions](https://docs.querylab.io/writing-sql/value-suggestions/). ## Turning it off or tuning it Settings → Editor → SQL Editor → Completions (also listed under [Settings](https://docs.querylab.io/settings/#sql-editor)).
Auto-completion
Choose when completion suggestions appear. Dot notation (table.column) always triggers completions.
- Automatic (show as you type) (selected) - Manual (Ctrl+Space only) - Chain completions: Automatically show next completions after accepting keywords or tables (e.g., FROM → show tables, users → show columns) - Enable ghost completions (selected): Show inline suggestions that you can accept with Tab - Enable INFORMATION_SCHEMA completions (selected): Show INFORMATION_SCHEMA prefix and tables in completions (e.g., dataset.INFORMATION_SCHEMA.TABLES) - Enable BigFunctions: Show community BigQuery UDFs (150+ functions) in completions
Completion style
How keywords and functions are filtered in autocomplete suggestions
- : Smart (context-aware). Show keywords and functions based on SQL context **Chain completions** opens the next list by itself after you accept `FROM` or a table name; dot navigation chains regardless. **Completion style** set to _Permissive (show all)_ lists every keyword and function everywhere and leaves filtering to you. BigFunctions are covered in [hierarchical completions](https://docs.querylab.io/writing-sql/hierarchical-completions/#bigfunctions). A separate _Identifier Formatting_ option chooses whether accepted table names get backticks always or only when needed (reserved words, dashes, special characters).