# Shape operations

Operations that clean, inspect and rearrange one table. Some work on its columns, such as changing a column's type, parsing dates, filling in missing values or adding a calculated column. Some work on its rows, such as filtering, sorting, sampling or removing duplicates. Some change the table as a whole, such as summarising by group or pivoting, and some only look at it, such as profiling the table or checking its quality.

Page: <https://meridian.online/docs/arcform/operations/shape>

## One row out per row in, with columns added or changed

- [Group values into bins](https://meridian.online/docs/arcform/operations/group-values-into-bins): Discretise, bucket, tile, histogram bins (Runs as a SQL step)
- [Convert binary and encoded text](https://meridian.online/docs/arcform/operations/convert-binary-and-encoded-text): Base64, hex, blob and character-set conversion (Runs as a SQL step)
- [Make a column from examples](https://meridian.online/docs/arcform/operations/make-a-column-from-examples): Derive a column from typed examples of the output (Not built yet)
- [Change a column's type](https://meridian.online/docs/arcform/operations/change-a-columns-type): Change data type, detect type, set metadata or role (Runs as a SQL step)
- [Merge near-duplicate values](https://meridian.online/docs/arcform/operations/merge-near-duplicate-values): Cluster near-duplicate values within one column and merge them (Runs as a SQL step)
- [Add a column by condition](https://meridian.online/docs/arcform/operations/add-a-column-by-condition): If, case or switch expression to a column (Runs as a SQL step)
- [Add a calculated column](https://meridian.online/docs/arcform/operations/add-a-calculated-column): New column from a formula or expression (Runs as a SQL step)
- [Encode categories as numbers](https://meridian.online/docs/arcform/operations/encode-categories-as-numbers): One-hot, dummy, label or ordinal encoding (Runs as a SQL step)
- [Hash or mask a column](https://meridian.online/docs/arcform/operations/hash-or-mask-a-column): Hash, checksum, mask, encrypt, anonymise (Runs as a SQL step)
- [Promote a row to headers](https://meridian.online/docs/arcform/operations/promote-a-row-to-headers): Promote a row to headers, or demote headers to a row (Runs as a SQL step)
- [Compare and combine conditions](https://meridian.online/docs/arcform/operations/compare-and-combine-conditions): Comparison and boolean expressions (Runs as a SQL step)
- [Apply a maths function](https://meridian.online/docs/arcform/operations/apply-a-maths-function): Numeric functions: arithmetic, rounding, trigonometry (Runs as a SQL step)
- [Combine columns into one](https://meridian.online/docs/arcform/operations/combine-columns-into-one): Concatenate several columns into one (Runs as a SQL step)
- [Fill in missing values](https://meridian.online/docs/arcform/operations/fill-in-missing-values): Replace, coalesce, impute or flag missing values (Runs as a SQL step)
- [Parse a date or time](https://meridian.online/docs/arcform/operations/parse-a-date-or-time): Parse, format or decompose dates and times; date arithmetic; time zones (Runs as a SQL step)
- [Parse nested values](https://meridian.online/docs/arcform/operations/parse-nested-values): Parse or build JSON, XML, URL, key-value, nested structs and lists (Runs as a SQL step)
- [Replace values](https://meridian.online/docs/arcform/operations/replace-values): Replace or map values, find and replace, value mapper (Runs as a SQL step)
- [Match with a regular expression](https://meridian.online/docs/arcform/operations/match-with-a-regular-expression): Regex extract, match, replace (Runs as a SQL step)
- [Rescale a number column](https://meridian.online/docs/arcform/operations/rescale-a-number-column): Normalise, standardise, z-score, min-max, log transform (Runs as a SQL step)
- [Fit columns to a layout](https://meridian.online/docs/arcform/operations/fit-columns-to-a-layout): Fit columns to a target layout (Runs as a SQL step)
- [Choose and rename columns](https://meridian.online/docs/arcform/operations/choose-and-rename-columns): Keep, drop, reorder or rename columns (Runs as a SQL step)
- [Split a column](https://meridian.online/docs/arcform/operations/split-a-column): Split one column into several by delimiter, position or pattern (Runs as a SQL step)
- [Standardise addresses, names and phone numbers](https://meridian.online/docs/arcform/operations/standardise-addresses-names-and-phone-numbers): Parse and standardise addresses, names, phone numbers (Runs as a SQL step)
- [Clean up text](https://meridian.online/docs/arcform/operations/clean-up-text): String functions: trim, case, pad, substring, remove characters, normalise whitespace or unicode (Runs as a SQL step)
- [Browse rows](https://meridian.online/docs/arcform/operations/browse-rows): View, preview or browse rows (A feature, not a step)
- [Edit cells by hand](https://meridian.online/docs/arcform/operations/edit-cells-by-hand): Change individual cells by hand, insert or delete specific rows (Runs as a SQL step)
- [Fill down or up](https://meridian.online/docs/arcform/operations/fill-down-or-up): Fill down or up across rows, and the inverse, blank down (Runs as a SQL step)
- [Number or rank rows](https://meridian.online/docs/arcform/operations/number-or-rank-rows): Row number, record id, rank, dense rank, ntile (Runs as a SQL step)
- [Mark rows](https://meridian.online/docs/arcform/operations/mark-rows): Mark rows without removing them: select, flag, star (Not built yet)
- [Sort rows](https://meridian.online/docs/arcform/operations/sort-rows): Order rows (Runs as a SQL step)
- [Run a SQL query](https://meridian.online/docs/arcform/operations/run-a-sql-query): Run a SQL query over the table (Runs as a SQL step)
- [Calculate across rows](https://meridian.online/docs/arcform/operations/calculate-across-rows): Running total, lag, lead, moving average, multi-row formula (Runs as a SQL step)

## Fewer rows, same columns

- [Deduplicate rows](https://meridian.online/docs/arcform/operations/deduplicate-rows): Distinct rows, unique by key, keep first or last per key (Runs as a SQL step)
- [Filter rows](https://meridian.online/docs/arcform/operations/filter-rows): Keep or drop rows by a condition (Runs as a SQL step)
- [Take the first or last rows](https://meridian.online/docs/arcform/operations/take-the-first-or-last-rows): First N, last N, top N, row range, skip rows (Runs as a SQL step)
- [Sample rows](https://meridian.online/docs/arcform/operations/sample-rows): Random or stratified sample, train and test split (Runs as a SQL step)
- [Split a table](https://meridian.online/docs/arcform/operations/split-a-table): Split one table into several by a key or a condition (Runs as a SQL step)

## More rows, each traceable to one input row

- [Split a list into rows](https://meridian.online/docs/arcform/operations/split-a-list-into-rows): One row to many: unnest, explode, split to rows (Runs as a SQL step)

## A new grain: each row stands for a group of input rows

- [Summarise by group](https://meridian.online/docs/arcform/operations/summarise-by-group): Group by and summarise (Runs as a SQL step)
- [Count values](https://meridian.online/docs/arcform/operations/count-values): Frequency table, value counts, count by (Runs as a SQL step)
- [Gather rows into columns](https://meridian.online/docs/arcform/operations/gather-rows-into-columns): Flatten a row group into columns, or spread columns back to rows (Runs as a SQL step)
- [Add subtotals](https://meridian.online/docs/arcform/operations/add-subtotals): Rollup, cube, grouping sets, subtotals (Runs as a SQL step)

## The same cells, rearranged

- [Pivot a table](https://meridian.online/docs/arcform/operations/pivot-a-table): Rows to columns, cross-tab (Runs as a SQL step)
- [Transpose a table](https://meridian.online/docs/arcform/operations/transpose-a-table): Swap rows and columns (Runs as a SQL step)
- [Unpivot a table](https://meridian.online/docs/arcform/operations/unpivot-a-table): Columns to rows, melt (Runs as a SQL step)

## A table describing the input rather than holding its rows

- [Chart the data](https://meridian.online/docs/arcform/operations/chart-the-data): Plot the data for exploration (A feature, not a step)
- [Measure correlation](https://meridian.online/docs/arcform/operations/measure-correlation): Correlation or association matrix, contingency table (Runs as a SQL step)
- [See a column's distribution](https://meridian.online/docs/arcform/operations/see-a-columns-distribution): Histogram, quantiles of one column (Runs as a SQL step)
- [Profile a table](https://meridian.online/docs/arcform/operations/profile-a-table): Summary statistics, distinct counts, null counts (Runs as a SQL step)
- [List columns and types](https://meridian.online/docs/arcform/operations/list-columns-and-types): List columns, types, metadata (Runs as a SQL step)
- [Check data quality](https://meridian.online/docs/arcform/operations/check-data-quality): Data-quality rule, assertion, test, constraint or schema check (Runs as a SQL step)
