Appendix B — Every word in the grammar

The whole vocabulary, on one page. If you are deciding whether to learn this, read the list and see how long it takes: that is the argument, and it is shorter than the argument for it.

Nothing here is typed by hand. The engine is asked what words it has when this page is built, so the list cannot describe a word that was removed or miss one that was added.

Kind Count What they do
Verbs 14 Steps in a pipeline. Every one is an imperative English verb
Aggregations 9 Collapse a group to one value
Windows 5 Answer for every row by looking at the other rows
Scalar functions 17 Answer for one row from that row
Grammar words 25 The small words that join the rest together

B.1 The verbs

A pipeline is a table, then then, then one of these, repeated.

`keep` · `pick` · `add` · `summarize` · `sort` · `take` · `join` · `add_rows` · `drop_duplicates` · `rename` · `drop_missing` · `fill_missing` · `lengthen` · `widen`

keep and pick are the two that choose: rows and columns. add and summarize are the two that make a column: one per row, and one per group. sort and take order and cut. Everything after those six is either a second table, a missing value, or a change of shape.

B.2 The aggregations

These go inside summarize, and inside add when it carries a by.

`total` · `average` · `median` · `smallest` · `largest` · `first` · `last` · `unique_count` · `row_count`

B.3 The windows

These answer once per row by looking along the other rows. Several of them require a sort in front, because they mean nothing until something has said in what order.

`rank` · `row_number` · `running_total` · `previous` · `following`

B.4 The scalar functions

One row in, one value out. These go anywhere a value goes.

`first_present` · `lower` · `upper` · `to_number` · `to_whole` · `to_text` · `to_date` · `trim` · `replace_text` · `split_text` · `characters` · `between` · `year` · `month` · `day` · `weekday` · `hour`

B.5 The grammar words

Not verbs and not functions. These are the joints: they say how the words on either side of them are related.

`then` · `where` · `as` · `by` · `all_but` · `descending` · `in` · `is` · `not` · `and` · `or` · `yes` · `no` · `missing` · `unmatched` · `starts` · `ends` · `contains` · `name` · `value` · `kind` · `giving` · `when` · `otherwise` · `matching`

B.6 That is all of it

There is no second list, no set of helpers, and no dialect that adds a few more on a cluster. A word that is not above is not in the grammar, and asking for one gets a refusal that names the nearest word that is.