Skip to content

Inline table Preview ​

An inline table is a small table stored in a notebook. You can edit its values directly in a sheet and join them with connection data from a SQL block. Columns can also have formulas, or references that look up values from the results of SQL blocks in the same notebook.

INFO

This feature is in preview. To request access, contact Codatum support.

Inline table editor ​

When you open an inline table, the inline table editor appears. Use Sheet and CSV at the top right to switch how you edit it. Both modes edit the same table.

  • Sheet: Edit cells directly, as in a spreadsheet app. You can set formulas and references on columns.
  • CSV: Edit the CSV text and the table definition (YAML), including columns, data types, the key, formulas, and references, directly.

Use the tabs at the bottom of the editor to switch to another inline table in the same notebook.

Select Go to a SQL block that uses this table (Explorer) in the editor menu to go to a SQL block that references this inline table. From that SQL block's result, you can open Explorer. If no SQL block references the inline table, the editor stays on the current page.

Creating and editing an inline table ​

You need edit permission on the notebook. When the notebook's lock is set to anything other than Unlocked, the inline table is view-only. Even when it's view-only, you can view the Revision history and go to a SQL block that uses this table from the editor menu.

Creating an inline table in a sheet ​

  1. In Inline tables in the left sidebar, open Add, then select Create new under Inline table.
  2. Select Add column at the right end of the headers, enter Name (used in SQL and formulas), Display name (optional), and Data type, then select Add.
  3. Enter values in the sheet. Use Add row at the end of the table to add rows.
  4. Select Save.

You can change the data type later with Data type in the column menu.

To enter values in CSV format instead, switch to CSV in step 2, enter the CSV, and specify each column's data type with type in Definition (YAML).

Creating an inline table from a CSV file ​

  1. In Inline tables in the left sidebar, open Add, then select Upload CSV under Inline table.
  2. Select a UTF-8 CSV file.

All columns are created as strings (STRING). To change a data type, use Data type in the column menu of the sheet, or type in the definition (YAML) under CSV.

Creating an inline table from a query result ​

You can save the result of a SQL block as an inline table. Referencing it from SQL on another connection lets you join data across connections. You need execute permission on the connection.

  1. Run SQL in a SQL block.
  2. Select the Save result as inline table icon at the top right of the SQL block.
  3. Enter a name.
  4. Select an option under How to keep the data. If you select Reference this SQL block, also select the Key columns.
  5. Select Save.

The icon appears once you run the SQL and the result is displayed. If the block already has linked inline tables, select the Inline tables icon, then select Save result as inline table. On mobile, select it from the menu at the top right.

If a column in the displayed result has a value in every row without duplicates, Reference this SQL block is selected under How to keep the data, and that column under Key columns, from the start.

How to keep the dataDescription
Reference this SQL blockRows are matched by the key columns, and the other columns reference this block. Columns you add by hand or with formulas stay when you refresh the references.
Copy the valuesSaves the values of the result. Later, you can re-run this block with refresh and replace the whole inline table with the new result. Use this when no columns identify each row.

With Reference this SQL block, every row needs a value in the key columns, and no two rows can share the same key. You can't save the result if a key column is empty in some row or if two rows have the same key.

You can open an inline table saved from a query result from the Inline tables icon at the top right of the SQL block. Selecting the icon shows the list of linked inline tables. If only one inline table is linked and you can't save the result (for example, there is no result or you don't have edit permission), that inline table opens directly. You can link multiple inline tables to one SQL block.

You can save results with up to 2,000 rows. You can't save results from PostgreSQL or SQLite. You can't save results that contain columns whose types aren't supported as inline table data types, such as ARRAY or STRUCT. Cast them in the SQL to save the result.

An inline table belongs to its notebook. You can change its name and content from the inline table editor.

Creating an inline table with the AI agent ​

You can ask the AI agent to create inline tables from the chat. It can also save a tool result from an agent connector directly as an inline table, without pasting the data back into the chat.

  • When the agent saves a tool result, the result JSON is converted into a table, and column data types are inferred from the values.
  • Inline tables saved by the AI agent aren't linked to a SQL block, so you can't refresh them.

Setting a formula ​

A formula on a column calculates that column's values from other columns. You set a formula on a column, not on a cell, and it applies to every row in the column.

  1. In the sheet, select a cell in the column, then type = followed by an expression. A formula editor opens over the cell and suggests columns and explains functions. You can also start with = in the formula bar.
  2. Press Enter.

You can also enter an expression in Formula in the column menu and select Apply. In the column menu, enter the expression without =.

  • When you select a cell that uses the formula value, the formula bar shows the column's formula starting with =. Press Enter or F2, or double-click the cell, to edit the formula in the formula editor over the cell. The change applies to every row in the column.
  • If you type in the formula bar without starting with =, only that cell uses the manual value. In a cell that uses the formula value, select the manual icon in the formula bar to start entering a manual value for that cell.
  • When you set a formula on a column that doesn't have one and the column has manual values, choose whether to replace them with the formula (Replace) or keep them (Keep manual values). Kept manual values take precedence over the formula.
  • In a column with a reference, the formula gives the value for rows that have no match in the source.
  • Press Esc to cancel editing.

For formula syntax and calculation rules, see Formulas.

Looking up values from a SQL block ​

A reference on a column looks up values from the result of a SQL block in the same notebook, matching rows by the key. You need the following:

  • Edit permission on the notebook.
  • Execute permission on the connection of the source SQL block.
  • Key columns that identify each row. Tables without a key can't use references.
  1. In the sheet toolbar, select Table settings.
  2. Under Key, select the columns that identify each row, then select Apply.
  3. Select the header of the column that should receive values, then open Reference in the column menu.
  4. In Source, choose the SQL block to look up under Add a SQL block as a source. To use a source you've already added, choose it under Sources.
  5. When adding a new source, under Match rows by, choose the SQL block column that has the same values as each key column of this table. A column with the same name is selected by default.
  6. Select Column in the source, then select Apply.
  7. Select the refresh icon on the source's button in the toolbar. You can also reopen Reference in the column menu and select Refresh this reference.
  8. Select Save.

The sheet toolbar shows a button for each source with the name of its SQL block and refresh and edit icons. Select the name to open the SQL block. Select the refresh icon to refresh references from that source. Select the edit icon, or Add reference when the table has no source yet, to add and edit sources under Sources in Table settings. For each column under This table, choose the corresponding SQL block column.

A column whose reference was set or changed and hasn't been refreshed since has no values yet. The reference icon in its header and the button for its source in the toolbar are shown in a warning color, and the number of such columns is shown as references not refreshed at the bottom of the sheet. Select it to refresh the sources of those columns. Changing the key column mapping of a source, or the table's key columns, also marks the columns that use references as not refreshed.

You can also refresh each source with Refresh this source in Table settings. For refresh behavior, see References.

Refreshing an inline table ​

For an inline table saved with Copy the values, you can update its data by re-running the linked SQL block. To change the query, edit the linked SQL block. For an inline table saved with Reference this SQL block, and to look up values again from the sources of a sheet, see Looking up values from a SQL block.

To go to the linked SQL block, select the Go to the linked SQL block icon in the Inline tables list in the left sidebar, or select Go to the linked SQL block in the inline table editor.

  1. Open the inline table editor.
  2. Select Refresh.

Refresh runs with the following specification:

  • SQL runs with the permissions of the user who refreshed. You need execute permission on the connection.
  • SQL always runs again without using cached results.
  • If the SQL uses parameters, they're resolved with the values saved on the page.
  • The result is saved as a new revision.
  • If you have unsaved changes, you're asked whether to discard them before the refresh.

If the linked SQL block was deleted or the SQL fails, the refresh fails and the inline table content doesn't change. You can't refresh when the linked SQL block references this inline table itself.

Refresh replaces the CSV values. Sheet settings are kept, and the table is handled as described in CSV changes outside the sheet.

If the refreshed result doesn't match the sheet settings (you added columns or changed data types in the sheet, or the key becomes empty or duplicated), a confirmation is shown, and refreshing removes the sheet settings (formulas, notes, views, and so on). To keep columns added in the sheet, create the table with Reference this SQL block. If the removed settings were saved, you can restore them from the revision history.

Revisions ​

Each time you save or refresh an inline table, its content at that point is recorded as a revision. A revision includes the CSV, the column data types, and the sheet settings. You can revert to a past revision as follows:

  1. Open the menu in the inline table editor, then select Revision history.
  2. Select Revert to this revision on the revision you want to restore.

Reverting saves the content of the selected revision as a new revision. The sheet settings also return to the state of the selected revision. Later revisions aren't deleted by reverting.

Old revisions that aren't referenced from anywhere might be deleted automatically. The 5 most recent revisions of each inline table and revisions referenced from versions and other resources are retained.

Referencing an inline table from SQL ​

Enter /inline-table/ in a SQL block and select an inline table. Inline tables are supported in SQL for BigQuery, Snowflake, Databricks, and Redshift.

Select an inline table reference to change its Alias. Turn off Assign alias to the end to use an AS clause entered directly in the SQL.

SQL reads the values of the saved CSV. Values calculated by formulas and references in the sheet are written to the CSV as of the last save.

Inline table values are included in the SQL sent for execution. The values might also appear in query history for the connection.

Deleting an inline table doesn't remove its references from SQL blocks. A reference to a deleted inline table becomes unresolved, and you can't run that SQL.

Sheet specification ​

Cell value priority ​

Each cell in the sheet takes the highest-priority value of the following three.

PriorityValueDescription
1ReferenceThe value looked up by key from the result of the source SQL block. If the source has no matching row, the next value is used.
2ManualThe value you entered in the cell.
3FormulaThe value calculated by the column formula. For a numeric parent column without a formula, it's the sum of the numeric child columns.
  • When you turn on Let manual values override the reference in Reference in the column menu, manual values take precedence over the reference in that column.
  • When you enter a value in a cell that uses the reference value, you're asked whether to turn on Let manual values override the reference for the column. Select Override and enter to turn it on and enter the value. Only the cells with manual values change; other rows keep the reference value.
  • When you type in a cell of a formula column without starting with =, only that cell uses the manual value. When you select a cell that uses a manual value, select Back to formula (Back to reference in a reference column) at the right of the formula bar to clear it.
  • When you select a cell, the area above the sheet shows which value is used. Select the Cell details and note icon at the right end above the sheet, or right-click a cell and select Details and note, to see the reference, manual, and formula values and which one is used.
  • You can add a note to a cell that has a manual value.

Key ​

A key is a set of columns that identifies each row. You set it in Key in Table settings, and you can combine multiple columns. You can also use Add to key and Remove from key in the column menu.

  • Only columns without a reference, formula, or parent-child relationship can be key columns. Folder columns can't be key columns.
  • When you add a date (DATE) column with Add to key in the column menu and the table has no period, the column becomes a period with the Month grain.
  • You can't set a key when any row has an empty or duplicate key value.
  • You can't edit cells in key columns. To change them, add or delete rows.
  • A table without a key identifies rows by their order. Tables without a key can't use references or periods.

Formulas ​

A formula is an expression that applies to every row of a column. Each row is calculated from the column values in the same row. Example: $clicks / NULLIF($impressions, 0)

Syntax ​

SyntaxDescription
$nameThe value of a column in the same row. Use this form when the column's name contains only letters, digits, and _.
${name}The value of a column in the same row. Use this form for names that contain spaces or symbols. Write } inside the name as }}.
123 1.5Numbers.
'text'Text. Write ' inside text as ''.
DATE '2026-04-01' TIMESTAMP '2026-04-01 09:00:00'A date or a timestamp. With an offset (-14:00 to +14:00) such as TIMESTAMP '2026-04-01 09:00:00+09:00', it's treated as the UTC time.
TRUE FALSE NULLTrue, false, and empty.
+ - * /Arithmetic.
||Joins text.
= <> != < > <= >=Comparisons. <> and != mean not equal.
AND OR NOTCombine conditions.
IN (…) BETWEEN … AND … LIKE IS NULLMatches one of the values, is within a range (inclusive), matches a pattern (% is any text), or is empty.
CASE WHEN … THEN … ELSE … ENDChooses a value by conditions, checked from the top.
INTERVAL 1 MONTHAn interval to add to a date. The unit is DAY, WEEK, MONTH, QUARTER, or YEAR.

Neighboring rows and total ​

SyntaxDescriptionExample
PREV($column)The value in the previous period's row among rows with the same non-period key values. PREV($column, n) returns the value n periods before (n is 1 to 1000). In a table without a period, it returns the value n rows before in row order. If there is no previous period's row (the first period or a missing period), the value is empty, or 0 in a numeric column. If a period has more than one row, it uses the row with the latest period value.PREV($balance) + $change
TOTAL($column)The sum of all rows in the column. Same as SUM($column).$spend / TOTAL($spend)
RUNNING_SUM($column)The running total up to this row, in the same order as PREV.RUNNING_SUM($sales)
MOVING_AVG($column, n)The average of the last n rows including this row (n is 1 to 1000), in the same order as PREV.MOVING_AVG($sales, 3)
NEXT($column)The value in the next row. NEXT($column, n) returns the value n rows later (n is 1 to 1000). Uses the same order as PREV. Empty if there is no later row or the next row's value is empty.NEXT($plan) - $plan

The same order as PREV means the period order among rows with the same non-period key values in a table with a period, and row order otherwise. PREV counts periods, so it doesn't find the period before a missing period. NEXT, RUNNING_SUM, and MOVING_AVG count rows, so they skip a missing period and use the next row. Like aggregates over rows, RUNNING_SUM, MOVING_AVG, and NEXT can be narrowed with WITHIN $column.

Aggregates over rows ​

Aggregate functions calculate over the rows of a column and put the result in each row. No rows or columns are added. For example, SUM($amount) puts the same total in every row.

Add WITHIN $column after the arguments of an aggregate to calculate over the rows with the same value as each row. For example, SUM($amount WITHIN $dept) puts the total of the rows in the same department in each row. To narrow by several columns, write WITHIN $dept, $year.

FunctionDescriptionExample
SUM(value)The sum.$amount / SUM($amount WITHIN $dept)
AVG(value)The average.$score - AVG($score WITHIN $team)
MIN(value) / MAX(value)The smallest or largest value.$sales / MAX($sales)
MEDIAN(value)The median.$price - MEDIAN($price WITHIN $category)
COUNT(value)The number of rows where the value isn't empty.COUNT($customer_id WITHIN $owner)
SUMIF(value, condition)The sum over the rows that match the condition.SUMIF($amount, $stage = 'won' WITHIN $owner)
AVGIF(value, condition)The average over the rows that match the condition.AVGIF($lead_time, $status = 'done')
COUNTIF(condition)The number of rows that match the condition.COUNTIF($status = 'open' WITHIN $owner)
RANK(value)The rank, largest first (1 is the largest). Rows with the same value share a rank.RANK($sales WITHIN $region)
  • Aggregates are calculated over all rows of the table. Filtering the sheet doesn't change what they include.
  • Aggregates don't count empty values. AVG averages the rows that aren't empty, and RANK doesn't rank empty rows.
  • You can't put an aggregate, PREV, or TOTAL inside an aggregate.

Functions ​

Function names are case-insensitive. Arguments in [ ] are optional.

FunctionDescriptionExample
ROUND(value, [digits])Rounds a number. digits is the number of decimal places. It defaults to 0, and negative values round to tens, hundreds, and so on.ROUND($price * 1.1, -1)
FLOOR(value)Rounds down to an integer.FLOOR($hours)
CEIL(value)Rounds up to an integer. Also written as CEILING.CEIL($stock / $per_box)
ABS(value)The absolute value.ABS($actual - $budget)
POWER(base, exponent)Raises a number to a power. Empty if the result is too large.POWER(1 + $rate, 12)
SQRT(value)The square root. Empty for negative numbers.SQRT($lead_time)
EXP(value)e raised to the value. Empty if the result is too large.EXP($rate)
LN(value)The natural logarithm. Empty for 0 or less.LN($value)
LOG(value) / LOG(base, value)The logarithm. With one argument, the base is 10. With two, the first is the base. Empty for 0 or less.LOG($value)
GREATEST(value, …)The largest of the values. Empty values are ignored.GREATEST($stock - $reserved, 0)
LEAST(value, …)The smallest of the values. Empty values are ignored.LEAST($achievement, 1.3)
IF(condition, then, else)then when the condition is true, else otherwise.IF($billing = 'annual', $price * 12, $price)
COALESCE(value, …)The first value that is not empty.COALESCE($discount, 0)
NULLIF(value, empty_if)Empty when the two values are equal. Use it to avoid dividing by 0.$clicks / NULLIF($impressions, 0)
CONCAT(value, …)Joins values as text. Empty values are skipped.CONCAT($last_name, ' ', $first_name)
UPPER(text) / LOWER(text)Converts to uppercase or lowercase.UPPER($code)
TRIM(text)Removes spaces at both ends.TRIM($name)
LENGTH(text)The number of characters.LENGTH($comment)
LEFT(text, count) / RIGHT(text, count)The first or last characters.LEFT($code, 3)
SUBSTRING(text, start, [length])Part of the text. start is 1 for the first character, and omitting length takes the rest. Also written as SUBSTR.SUBSTRING($code, 2, 3)
CONTAINS(text, search)Whether the text contains the search text (true or false).CONTAINS($email, '@example.com')
STARTS_WITH(text, prefix)Whether the text starts with the prefix (true or false).STARTS_WITH($code, 'JP')
YEAR(date) / QUARTER(date) / MONTH(date) / DAY(date)The year, calendar quarter (1-4), month, or day of a date.YEAR($close_date)
FISCAL_YEAR(date) / FISCAL_QUARTER(date)The fiscal year (the year it starts) and fiscal quarter (1-4), using the fiscal year start month of the period. With an April start, March 2026 is Q4 of fiscal year 2025. Tables without a period use a January start.FISCAL_YEAR($month)
DATE_DIFF(unit, start, end)The number of days, months, and so on between two dates. unit is 'day', 'week', 'month', 'quarter', or 'year'. Also written as DATEDIFF.DATE_DIFF('day', $start_date, $end_date)
DATE_ADD(date, interval)Adds an interval to a date.DATE_ADD($start_date, INTERVAL 30 DAY)
DATE_TRUNC(unit, date)Truncates a date to the start of a month, quarter, and so on. unit is the same as in DATE_DIFF.DATE_TRUNC('month', $order_date)
STRFTIME(date, format)Formats a date as text. The format can use %Y (year), %m (month), %d (day), %H (hour), %M (minute), %S (second), and others.STRFTIME($month, '%Y/%m')
CAST(value AS type)Converts a value to another type. type is VARCHAR, DOUBLE, BIGINT, INTEGER, BOOLEAN, DATE, or TIMESTAMP. Values that can't be converted become empty.CAST($code AS INTEGER)

Calculation rules ​

  • In a formula, empty values in numeric columns are treated as 0 when used in calculations and comparisons. Aggregations (SUM, AVG, COUNT, MIN, MAX, and so on) don't count empty values. Also, empty values stay empty when a column is passed as is to COALESCE, GREATEST, LEAST, or CONCAT, and when you check it with $column IS NULL.
  • Rows that can't be calculated, such as dividing by 0, taking the logarithm of 0 or less, exceeding the integer range, or producing a date outside the years 1 to 9999, are empty. Other rows are still calculated.
  • A decimal result in an integer column is rounded half away from zero (2.5 becomes 3, and -2.5 becomes -3).
  • A wrong number of function arguments, an unsupported unit in DATE_TRUNC or DATE_DIFF, an unsupported format in STRFTIME, a formula that ends with a keyword such as AND or an operator, and CAST without AS type cause an error as you type.
  • If a change to a formula, the key, a data type, or similar makes the whole table impossible to calculate, the change is undone and the reason is shown. Press ⌘⇧Z / Ctrl+Shift+Z to redo it.
  • A column's own value can be used only inside PREV. Using it in TOTAL or an aggregate such as SUM would make the column depend on itself, so it isn't allowed.
  • If you leave the formula of a numeric parent column empty, it becomes the sum of its numeric child columns. Non-numeric child columns aren't included in the sum.
  • Folder columns can't be used in formulas.
  • When you change a column's name, formulas that use the column are updated automatically.
  • You can't delete a column that's used in a formula.
  • A formula can be up to 2,000 characters.
  • If a column with manual values gets a formula, the manual values still take precedence. To clear them, turn on Clear manual values and use the formula and apply.

Input assistance ​

The formula input helps you write formulas as follows.

  • Below the input, the basics of the syntax and example formulas that use this table's columns are shown.
  • Type $ to see column suggestions, or type a name to see function, keyword, and column suggestions. Press ⌃Space / Ctrl+Space to show suggestions at any time. The selected suggestion is described on the right.
  • Inside a function's parentheses, the function's syntax and a description of the current argument appear below the input.
  • Columns used in the formula are tinted in the sheet. Hover over a column in the formula or in Uses to highlight it further and show its details below the input.
  • Columns that don't exist, functions that can't be used, and errors in the expression are underlined with a wavy line.
  • Type /func/ followed by words to search functions by name, description, or common terms (such as "moving average" or "cumulative"), in English or Japanese. Type /var/ followed by words to search columns by name or display name. Type just / to see these two options.
  • Select Syntax and functions to show the syntax, calculation rules, common examples, and the list of functions below the formula help, where you can scroll through them while you type the formula. You can search functions, and select Insert to insert a function at the cursor in the formula.
  • Press ⌘Enter / Ctrl+Enter to apply.

References ​

Set the following items in Reference in the column menu.

ItemDescription
SourceThe SQL block to look up values from. Choose a source you added, or a SQL block under Add a SQL block as a source. When you add a new one, also set Match rows by.
Column in the sourceChoose from the columns of the source result. If the source result has a column with the same name as the column you're setting, that column is selected from the start. If the columns of the source can't be read, enter the column name.
When the source has several rows for a keyThe default is Expect one row (error if several), and cells that match several rows show an error. Select Any one of them to use the value of one of the matching rows. Which row is used isn't defined, so use it when the matching rows have the same value (for example, a customer name repeated on detail rows). Select Count, Sum, Max, or Min to aggregate the matching rows.
Let manual values override the referenceWhen turned on, manual values take precedence over reference values in the column.

To stop using the reference, select None (do not look up) in Source, then select Apply.

Refreshing references runs with the following specification:

  • The SQL of the source SQL block runs with the permissions of the user who refreshed. You need execute permission on the source connection.
  • SQL always runs again without using cached results.
  • If the SQL uses parameters, they're resolved with the values saved on the page.
  • The result is applied to the sheet but isn't saved. Select Save to save it as a new revision.
  • If some sources fail to refresh, the results of the successful sources are still applied.
  • If you change table settings such as the key, sources, or columns during a refresh, the result isn't applied. Refresh again.
  • You can't refresh when the source SQL block references this inline table itself.
  • If a query doesn't finish in time, the refresh of that source fails and the running query is canceled.

When you select Match the rows of (SQL block name) (refreshing adds and removes rows; manual values are kept) in Rows in Table settings, each refresh adds and removes rows to match the keys in the source result. Manual values in removed rows are kept and are used again if a row with the same key returns. Up to the 5,000 most recent are kept.

Periods ​

When the key includes a date (DATE) column, you can set Period in Table settings. With a period, you can use Add next period, PREV, and grouping by fiscal year and quarter.

ItemDescription
Period columnThe column that represents the period. Choose from the date (DATE) columns in the key.
GrainChoose from Day, Month, Quarter, and Year. The default is Month.
Fiscal year starts inA month from 1 to 12. The default is 1.

Add next period adds a row for the period after the latest one for each combination of non-period key values. Columns without a reference, formula, or child columns carry over the previous period's values. You can't use it in a table whose grain is Day.

Views ​

A view is a way to show the same inline table differently. Switch views with the tabs at the top of the sheet. There is only one set of data, so changing a value in any view changes the same table. The CSV, references from SQL, and formulas always use all rows and columns, regardless of views.

The following settings are saved per view:

  • The layout (Table, Kanban, or Timeline) and its settings.
  • Row grouping and sorts and filters.
  • Column visibility.
  • The title column of Kanban and Timeline, the order of cards and rows you arranged by hand, the order of Kanban lanes, and the Timeline scale and Fit to scale.

Column settings such as column order, data type, and format are shared by all views.

You can work with views as follows:

  • Select Add view to the right of the tabs and choose a layout to add a view. A new view starts with no grouping, sorts, or filters. A table starts with no hidden columns. Kanban and Timeline start by showing only the title and four columns, so cards and bars stay short.
  • Select the tab of the open view to show the following menu. You can also double-click a tab to rename it.
    • Rename
    • Layout: Changes the layout of the open view.
    • Duplicate
    • Move left
    • Move right
    • Delete view: You can't delete the last view.
  • A view without a name is shown with the name of its layout, such as Table.
  • An inline table can have up to 30 views.
  • Views are saved in the sheet settings and appear the same to everyone who opens the inline table. When you open an inline table, the first view is shown. If you can only view the inline table, you can switch views but can't add or change them.

Kanban ​

Kanban places rows as cards in lanes, one lane for each value of a column. Set how rows are split into lanes with Lanes in the toolbar. As with row grouping, you can choose a text, checkbox, number, or date column, group a date column by a unit such as Month, and group a number column by width.

  • For a column with choices, lanes follow the order of the choices. For a boolean column, lanes are true and then false. Values not in the choices and values of other columns follow in value order. Rows with an empty value are in the last lane, (Empty). (Empty) is shown in a narrow width even when it has no cards.
  • To change the order of lanes, drag the header of a lane, or drag lanes in Lane order under Lanes. Select Reset to go back to the default order. The order of lanes is saved per view and doesn't change the order of the choices.
  • The title of a card shows the value of the column chosen in Title in the toolbar. If none is chosen, it's the first shown column other than the lane column. Below the title, the shown columns that have values are listed. To choose the columns shown on cards, use Columns in the toolbar to show or hide them.
  • Drag a card to another lane to change the row's value to the lane's value. Moving a card to (Empty) clears the value. For a cell that uses a reference value, you're asked whether to prioritize manual input, the same as in the table.
  • When you move a card to a lane grouped by a date unit, the date shifts by the difference between the lanes. For example, with Month lanes, moving April 17 to June makes it June 17. A day past the end of the month becomes the last day of that month (January 31 moved to February becomes February 28). The time of a date and time column doesn't change. A row with an empty date gets the first day of the lane (the 1st for Month, Monday for Week).
  • You can't move cards to lanes grouped by a number width, because the value to enter isn't determined. You can move them to (Empty). When lanes are split by a key column, cards can't be moved between lanes.
  • Drag a card within a lane to change the order of cards. When you move a card to another lane, it's placed where you drop it.
  • Select a card to open the row details.
  • Select Add at the bottom of a lane to add a row with the lane's value. In a lane grouped by a date unit, the first day of the lane is entered (midnight for a date and time column). For a table with a key, enter the key values before adding. Add isn't shown in lanes that cards can't be moved to.
  • With row grouping, cards are split into a horizontal band for each group. Select the header of a band to collapse it. When you move a card to another band, the value of the band's column changes by the same rules as lanes. While cards are split into bands, Add isn't shown.
  • Cards can't be moved to bands grouped by a number width or a key column. A move that changes both the band's and the lane's values can't be made to a cell that uses a reference value.
  • Set sorts and filters by choosing a column with Sort and Filter at the top of the sheet.

Timeline ​

Timeline shows rows as bars on dates, using date columns. Choose a date or datetime column with Start and End in the toolbar. You can also choose No end date.

  • A bar runs from the start date to the end date. If the end is empty or earlier than the start, the bar covers only the start date.
  • A bar shows the value of the column chosen in Title in the toolbar, followed by the values of the shown columns. If no title is chosen, it's the first shown column other than the start and end columns. Values of a column with choices have a dot in the choice's color. The text can extend past the end of the bar. The row names on the left show the value of the title column.
  • Rows with an empty start are shown at the bottom under No (start column name).
  • Use Day, Week, Month, and Quarter at the top left to switch the scale. The Quarter scale splits the year into three-month periods starting from the fiscal year start month of the period. In a table without a period, it starts in January.
  • Select Today to scroll to today. A vertical line marks today. When you scroll to either end, more dates are added.
  • A view without a chosen scale opens with a scale that fits the range of the bars. The scale you choose is saved per view.
  • Turn on Fit to scale at the top left to show each bar over whole steps of the scale. For example, with the Month scale, a row from April 17 to May 3 is shown from April 1 to May 31. Dragging also moves one step at a time: the start becomes the first day of the step (the 1st for Month, Monday for Week), and the end becomes the last day of the step (the end of the month for Month). Quarter steps are three months starting from the fiscal year start month.
  • Drag a bar to shift its start and end dates. If an end column is chosen, drag the left or right edge of a bar to change the start or end. For a short bar, the edges you can drag are shown outside the bar. Extending either edge of a row with an empty end fills in the end.
  • You can change dates by dragging only for rows whose start and end are both date columns and whose cells accept manual values. Change datetime columns in the row details. Key columns and cells that use reference values can't be changed.
  • Drag a row name to change the order of rows.
  • With row grouping, rows are shown in a section for each group. Select the header of a section to collapse it. Rows can't be reordered between sections.
  • Select a bar or a row name to open the row details.

Kanban and Timeline in common ​

  • Only rows that match the filters are shown.
  • Cards and rows follow the sorts if any are set, and otherwise the order you arranged by dragging. While sorts are set, you can't arrange them by hand.
  • The order you arranged by dragging and the order of lanes are saved per view. They don't change the order of rows in the data (the CSV order, and the order used by PREV and similar functions in a table without a period). Rows you haven't arranged follow in table order.
  • Changes to values (moving to another lane, changing dates, adding rows) can be undone with Undo (⌘Z / Ctrl+Z), the same as in the table. Changes to the order are view settings, like sorts and filters, so they can't be undone.

Row grouping ​

Use Row groups at the top of the sheet to group rows and show subtotals for each group. You can group by text, checkbox, number, and date columns.

  • Select Row groups and choose a column, or drag a column header to Row groups.
  • You can also use Group rows by this column in the column menu. For date columns, the item shows the unit, such as Group by month.
  • Select a date or number group you added to change how it groups rows.
  • Select Remove this group on a group to remove it, and drag groups to reorder them.
Data typeHow rows are grouped
Text and checkboxBy each value.
NumberSelect Each value or By width. With a width, rows from the lower bound up to, but not including, the lower bound plus the width form one group. For example, with a width of 10, rows from 20 up to 30 are grouped into 20 – 30. The initial width splits the column's range of values into about 10 groups.
Date, Date and timeSelect Year, Quarter, Month, Week, or Day. In a table whose period fiscal year doesn't start in January, you can select Fiscal year and Fiscal quarter instead of Year and Quarter. Weeks start on Monday. Date and time values are grouped by their date.
  • You can group by the same date column more than once with different units, such as months under fiscal years. When you add a date column, rows are grouped by the coarsest unit that isn't used yet, starting from the year (or fiscal year) for the period column and from the month for other date columns.
  • Date and number groups are listed in ascending order of their values, groups of a column with choices follow the order of the choices, and other text and checkbox groups follow the order of the rows in the table. Rows without a value are grouped into (Empty) at the end.
  • You can also use row grouping in Kanban and Timeline.

Select how numeric columns are calculated in subtotals and totals in Aggregation in the column menu. The default is Sum. Summing a rate such as a profit margin gives a wrong value, so select None or another method for such columns.

In a table with a period, Last value is the sum of the rows in the latest period that has values. For example, in a table keyed by department and month, the total row shows the sum of each department's value in its latest month. In a table without a period, it's the value in the last row that has a value, in the order of the table's rows.

The columns used for grouping and how they're grouped are saved in the sheet settings. Subtotals aren't saved to the CSV.

Sort and filter ​

Use Sort and Filter at the top of the sheet, or Sort and Filter in the column menu, to set the order of the rows shown in the sheet and to narrow them down. The operations and conditions are the same as in Explorer tables.

Set a sort in either of these ways:

  • Select Sort at the top of the sheet, choose a column, and select Ascending or Descending. A column that isn't sorted yet is added after the other sorts. For a column that's already sorted, the direction changes and its priority stays the same. Drag a column header to Sort to add an ascending sort on that column at the end. If the column is already sorted, the settings to choose the direction open.
  • Select Ascending or Descending in the column menu to sort by that column only. Select the same direction again to remove the sort. When the sheet is already sorted by another column, select Append to add it after the existing sort.

To set a filter, select Filter at the top of the sheet and choose a column, or drag a column header to Filter, to open the filter settings for that column. You can also use Filter in the column menu.

  • Sorts and filters you set are listed in Sort and Filter at the top of the sheet. Select one to change it, or select Remove to remove it. Drag sorts to change their priority.
  • When rows are grouped, the rows within each group are sorted. The order of the groups doesn't change.
  • Empty values come last in both ascending and descending order.
  • Rows you add while a filter or sort is applied stay visible at the end without being sorted, even if they don't match the filter. Rows whose values you change while a filter is applied also stay visible even if they no longer match the filter (they still follow the sort). Rows that don't match show Outside filter. They follow the filter and sort when you do one of the following:
    • Select Apply filter and sort again at the bottom of the sheet. With only a filter, it shows Apply filter again. With only a sort, it shows Apply sort again.
    • Change the filter or sort.
    • Open the inline table again.
  • When you edit an existing row so that it no longer matches the filter, it's hidden right away.
  • In Filter, you can set the following four. Rows that meet all of them are shown.
    • Filter by value
    • Exclude by value
    • Filter by condition
    • Filter NULL
  • While a filter is applied, the row count at the bottom of the sheet shows the shown rows out of all rows. Subtotals and totals are calculated from the shown rows.
  • Sorting and filtering only affect the display. The CSV row order, references from SQL, and formulas (TOTAL and PREV) still use all rows.
  • Sorts and filters are saved in the sheet settings and are shown the same way to everyone who opens the inline table. Users with view-only access can change them, but the changes aren't saved.

Column hierarchy ​

You can organize columns into parents and children. Use Add a child column and Belongs to in the column menu. In Belongs to, choose an existing column as the parent, or select Create a new parent column to create one. Drag a column header to the middle of another column's header to make it a child of that column.

  • A numeric parent column without a formula is the sum of its numeric child columns. Non-numeric child columns aren't included in the sum.
  • For a parent column that doesn't need values, turn on Folder in the column menu. Folder columns have no values and aren't included in the CSV. In the sheet, a folder appears only in the upper header row, and it appears as a column when collapsed.
  • Select the upper header of a parent column or folder to open its column menu. Use ▾ to collapse the child columns.
  • When a value entered manually (or a reference value) in a parent column differs from the sum of the child columns, the cell shows the difference. A parent column with a formula doesn't show it.
  • Key columns can't have a parent or children.
  • When you delete a column that has child columns, you choose whether to keep the child columns or delete them too.
  • Boundaries between groups of parent and child columns are shown with thicker lines.

Column visibility ​

Select Columns in the sheet toolbar to open the column list, and use the eye icon of each column to show or hide it. You can also hide a column with Hide column in the column menu.

  • Column visibility is set per view. The shown columns are also used for Kanban cards and Timeline row names.
  • Hiding a column only affects the sheet display. It doesn't affect the CSV, references from SQL, or formula calculations.
  • Hiding a parent column also hides its child columns.
  • You can't hide all columns.
  • When some columns are hidden, Columns in the toolbar shows how many. Select Show all in the column list to show all columns again.
  • Select a column name in the column list to go to that column. A column inside a collapsed parent goes to the parent, and an expanded folder goes to its first child column. This doesn't work in Kanban and Timeline.

Table settings ​

Use Table settings in the sheet toolbar to view and set the following items.

ItemDescription
KeyThe columns that identify each row. See Key.
RowsAppears when the table has a key and a source. Choose Add rows manually or match the rows of a source result.
SourcesThe list of source SQL blocks. Shows the key mapping, the columns that use each source, the last refresh time, and the matched, not found, and duplicate counts from the refresh. Select Open to go to the SQL block. Select Remove source to remove the source. You can't remove a source that's used by a column or by Rows. When you add a source, choose a column of the SQL block for each key column. Columns with the same name are selected from the start.
PeriodSee Periods.
Column hierarchyThe list of parent and child columns. Appears when the table has parent and child columns.

Column menu ​

Select a column header in the sheet to open the column menu. For key columns, the items from Data type to Aggregation, Add a child column, and Delete column aren't shown. For folder columns, Sort, Filter, Data type, Reference, and Formula aren't shown.

ItemDescription
Column name (top of the menu)Select it to rename the column. Name (used in SQL and formulas) becomes the CSV header, so if you change it, you need to update SQL that uses the column. Display name (optional) is only for display in the sheet. When it's empty, the name is shown.
SortSee Sort and filter.
FilterSee Sort and filter.
Data typeChoose from Text (STRING), Number (decimal) (FLOAT), Number (integer) (INTEGER), Checkbox (BOOLEAN), Date (DATE), and Date and time (DATETIME). To use TIMESTAMP, specify it in the definition (YAML) in CSV. If manual values don't match the new type, a confirmation shows how many. Those values show as errors and are removed when you save.
FolderWhen turned on, the column has no values, holds child columns, and isn't included in the CSV. Its formula, reference, aggregation, and manual values are removed. When turned off, the column becomes numeric if it has numeric child columns, or text otherwise.
ChoicesAppears for text columns. When you turn on Choose values from choices, you choose a value from the choices when you edit a cell. You can pick a color for each choice, and cells show the choice in that color. If the choices are empty when you turn it on, the values in the column are filled in as choices.
FormatAppears for numeric columns. Specify Percent, Thousands separator, and Decimal places. If Decimal places is empty, percentages show 1 decimal place and other numbers show up to 2 (trailing zeros omitted). Turn on Show a bar for the value to show a bar behind the value in detail rows, sized by the value within the column. Bars start at 0 and are scaled by the minimum and maximum values of the rows shown. It's only for display in the sheet and doesn't change the CSV values.
ReferenceSee References.
FormulaSee Formulas.
Belongs toSelect the parent column. Select None (top level) to remove the parent. Select Create a new parent column to create a parent column and put this column in it. When created from a numeric column, the parent is the sum of its numeric children; otherwise it's a folder.
AggregationAppears for numeric columns. Select how subtotals and the total row are calculated when rows are grouped: Sum, Average, Max, Min, Count, Last value, or None.
Add to key / Remove from keySee Key.
Group rows by this column / Group by month and similar itemsSee Row grouping.
Insert column to the left / Insert column to the right / Add a child columnAdds a column after you specify its name and data type. Add a child column adds it as a child of this column.
Hide columnSee Column visibility.
Hidden columnsAppears when there are hidden columns. Shows the column you select again.
Delete columnDeletes the column. If the column has child columns, choose Keep the child columns (move them up) or Delete the child columns too. You can't delete a column that's used in another column's formula.
Pin to left / Pin to rightPins the column to the left or right edge of the table. Key columns are pinned to the left from the start. Pinning lasts only while the table is open and isn't saved.
Column widthChoose Fit to values, Fit all columns to values, Reset to initial width, or Reset all columns to initial widths. Column widths last only while the table is open and aren't saved.

Cell operations ​

Select Shortcuts in the toolbar to see the list of sheet operations.

  • Copy and paste use tab-separated values, so you can exchange values with Google Sheets and Excel.
  • When pasted values go past the end of the table, rows are added for them. In a table with a key, include the key columns in the pasted range to add rows with those key values. Rows whose key is empty, doesn't match the type, or already exists aren't added.
  • Dragging the fill handle (■ at the bottom right of the selection) continues the values when the selected values are evenly spaced (1, 2 → 3, 4; first-of-month dates → the next months; No.008, No.009 → No.010). Values that aren't evenly spaced, a single value, and values whose trailing number would go below 0 are repeated. ⌘D (Ctrl+D on Windows) copies the top value.
  • Pasting and the fill handle don't change key column cells or cells that use the reference value. The fill handle and ⌘D copy only manual values, not values that come from references or formulas.
  • Group header and total rows aren't included when you copy them together with detail rows.
  • Search with ⌘F / Ctrl+F moves to matching cells. It doesn't filter rows.
  • To delete rows, select the row number and press Delete, or right-click a cell or row number and select Delete row. Drag across row numbers, or hold Shift while selecting them, to select several rows. With cells selected, press ⌘- (Ctrl+- on Windows) to delete the rows in the range.
  • Press ⌘S / Ctrl+S to save.

The bottom of the sheet shows information about the selection, the number of cells with errors, the number of rows not found in the source, the number of cells where a manual value overrides a reference or formula, and the number of rows. Cells whose underlying reference or formula value has changed since the manual value was entered are counted as changed underneath.

Changes since the last save are marked in the sheet: cells whose manual value changed have a mark at the top left, added rows are tinted, and added columns and columns whose settings changed have a mark in the header. The number of changes is shown as Unsaved at the bottom of the sheet. The marks disappear when you save, and a cell's mark disappears when you change it back to its saved value.

Hover over a cell with an error to see the error.

Row details ​

Row details show all columns of a row as a two-column table of column names and values, so you can edit them together. Text inputs grow vertically with their content and start two lines tall when empty. Open row details in one of the following ways:

  • Hover over a row and select the Open row icon to the left of the row number.
  • Select the row number.
  • Right-click a cell and select Open row.

Input in row details works as follows:

  • Text columns use multi-line inputs. Press ⌘Enter / Ctrl+Enter or select outside the input to confirm.
  • Columns whose values come from a reference or formula show only the value. Select the Override with a manual value icon to enter a manual value. For a column with a manual override, select Clear manual value to go back to the reference or formula value.
  • You can't edit key columns or columns that use the reference value.
  • Hidden columns appear when you open Hidden columns.
  • Use the previous row and next row icons to switch rows.

Saved sheet settings ​

When you save in the sheet, the value used in each cell is saved as the CSV. Subtotals from grouping aren't included in the CSV.

The following are saved with the CSV in the revision as sheet settings:

  • Column settings (formula, reference, parent column, display name, choices and their colors, format, and aggregation).
  • Manual values and notes.
  • Table settings (key, rows, sources, and period) and the last refresh time of references.
  • Views (the layout and its settings, the columns used for row grouping, sorts and filters, column visibility, and for Kanban and Timeline the title column, the order arranged by hand, the order of lanes, and the scale).

CSV changes outside the sheet ​

When the CSV changes through CSV editing, the AI agent, or a refresh from the linked SQL block, the sheet settings are kept as they are. The next time you open the table in the sheet, formula and reference columns are recalculated, and a message prompts you to save. Select Save to write the recalculated values to the CSV.

  • If you rename, add, or remove columns in the CSV header in CSV, the columns no longer match the sheet settings. To change columns while keeping the sheet settings, change them in the definition (YAML). Saving while the columns don't match the sheet settings asks for confirmation, including after editing in the sheet or the definition (YAML), and then removes sheet settings such as formulas, references, and notes. Renaming the table alone doesn't ask. If the settings were saved, you can restore them from the revision history.
  • In a table without a key, manual values, notes, and the hand-arranged row order tied to row positions are removed.

Definition (YAML) ​

When you switch to CSV, Definition (YAML) on the right shows the table definition in YAML, including columns, data types, the key, sources, periods, formulas, and references. Even for a table you haven't saved in the sheet, it shows a definition made from the CSV and each column's data type. Select Copy to clipboard to copy it.

When you edit the YAML, the definition is applied shortly after you stop typing, as with the CSV. Formula and reference columns are recalculated, and the values are written to the CSV and the sheet. To save the inline table, then select Save.

  • Saving and switching to the sheet wait until the definition is applied.

  • While an edit that can't be applied remains (it has a problem or needs confirmation), you can't switch to the sheet. Fix it, or select Discard to undo your edits.

  • If the definition has a problem, the line and the problem are shown, and the definition isn't applied.

  • If applying would lose manual values or other data, as in the following cases, this is shown before applying. Select Apply anyway to apply it.

    • Manual values in deleted columns and in columns turned into folders are deleted. If you change a column's name in the YAML, it's treated as deleting the column and adding a new one, so its manual values aren't kept. To keep the manual values and the formulas that use the column, select the column name at the top of the column menu in the sheet and rename it there.
    • In columns whose data type changes, manual values that don't match the new type show as errors and are removed when you save.
    • Reference values in columns whose reference settings change are cleared. Refresh the references in the sheet to look them up again.
    • If you apply after changing the CSV, the sheet settings are removed when they don't match the CSV columns. In a table without a key, manual values, notes, and the hand-arranged row order tied to row positions are removed.
  • When you change the key, the definition isn't applied if a row has an empty value in a key column, a value that doesn't match the column's data type, or the same values as another row.

  • If the CSV can't be opened in the sheet (it has values that don't match their format, or it exceeds the row limit), you can only change the data type of each column.

Data types and values ​

You can select one of the following data types for each column. You can't save CSV that contains values that don't match the format. For how to select data types in the sheet, see Column menu.

Data typeValue format
STRINGAny string.
INTEGERInteger within the 64-bit integer range, e.g. -42.
FLOATNumber, including exponent notation, e.g. 3.14 or 1e-3.
BOOLEANtrue or false (lowercase).
DATEYYYY-MM-DD, e.g. 2026-08-25.
DATETIMEYYYY-MM-DDTHH:MM:SS with up to 6 fractional second digits, e.g. 2026-08-25T13:45:00.
TIMESTAMPDatetime with Z or ±HH:MM, e.g. 2026-08-25T13:45:00+09:00.

An unquoted empty field is treated as NULL. A quoted empty string ("") is valid as an empty string for STRING, and invalid for the other data types.

Versions ​

Inline tables are included in versions. See the version specification for behavior when you inspect, restore, or create a notebook from a version.

Constraints ​

  • An inline table name can contain up to 200 characters, and an alias can contain up to 128 characters.
  • CSV must use UTF-8 and include a header row.
  • An inline table can contain up to 100 columns (folder columns aren't counted) and 10MiB. It needs at least one column that isn't a folder.
  • In the sheet and the definition (YAML), you can't create column names that differ only in case (Sales and sales). When you refer to a column in a formula or the key, use the same case as the column name.
  • An inline table can have up to 2,000 rows. You can't save a CSV with more than 2,000 rows.
  • An inline table saved earlier with more than 2,000 rows can't be referenced from SQL or opened in the sheet. Reduce it to 2,000 rows or fewer in CSV and save it.
  • The sheet settings of an inline table can be up to 4MiB. They include the values looked up by references, manual values in formula and reference columns, and notes.
  • An inline table can have up to 30 views.
  • A column display name can contain up to 200 characters, and a formula up to 2,000 characters.
  • A notebook can contain up to 100 inline tables.
  • A notebook can retain up to 1,000 inline table revisions with a combined size of 1GiB. The size includes sheet settings.
  • SQL, including expanded inline tables, can be up to 900KiB.
  • You can look up values only from BigQuery, Snowflake, Databricks, and Redshift SQL blocks in the same notebook.
  • When Rows matches a source result, the refresh of that source fails if the source result has more than 2,000 keys.
  • Redshift can't reference inline tables whose values contain control characters other than tabs, line breaks, and a few others.
  • You can't import or export a notebook that contains inline tables as a file.
  • Table and Query result in dynamic options can't reference inline tables.
  • Deleting an inline table reduces the inline table count usage. Revision count and storage usage are released later, so a revision quota can remain exceeded immediately after deletion.

See also the numeric limits.