From 67cf263ec5f6bb8d104efc3a1f65d0749179f84d Mon Sep 17 00:00:00 2001 From: dc Date: Wed, 21 Oct 2026 14:38:13 +0000 Subject: [PATCH] blog(derived-variables): computed columns you can filter on The feature post: why a computed column is not filterable in a single DATA step, the view that makes it so, the MPE_DERIVED configuration, dependency ordering by VAR_DEPS, and what the feature will not do. Three screenshots from the EDIT screen - the grid, a filter on a character derived column, and a filter on a numeric one. --- .../derived-filter-region.png | Bin 0 -> 36819 bytes .../derived-filter-value.png | Bin 0 -> 34261 bytes .../blog/derived-variables/derived-grid.png | Bin 0 -> 36672 bytes content/blog/derived-variables/index.md | 135 ++++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 content/blog/derived-variables/derived-filter-region.png create mode 100644 content/blog/derived-variables/derived-filter-value.png create mode 100644 content/blog/derived-variables/derived-grid.png create mode 100644 content/blog/derived-variables/index.md diff --git a/content/blog/derived-variables/derived-filter-region.png b/content/blog/derived-variables/derived-filter-region.png new file mode 100644 index 0000000000000000000000000000000000000000..09cccc5625ea6072d80c31b7548f71adcd4397a3 GIT binary patch literal 36819 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 literal 0 HcmV?d00001 diff --git a/content/blog/derived-variables/derived-grid.png b/content/blog/derived-variables/derived-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4bc2ffb2e3d5a9ca91fe9db1ec04d23f4a4bbd GIT binary patch literal 36672 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 F{{fusl$ihk literal 0 HcmV?d00001 diff --git a/content/blog/derived-variables/index.md b/content/blog/derived-variables/index.md new file mode 100644 index 0000000..574725a --- /dev/null +++ b/content/blog/derived-variables/index.md @@ -0,0 +1,135 @@ +--- +title: 'Derived Variables: computed columns in the EDIT screen' +description: Data Controller can now compute columns that do not exist in the table - and, crucially, filter on them. Configured per table in MPE_DERIVED, computed on every read, never stored. +date: '2026-10-21 12:00:00' +author: 'Allan Bowe' +authorLink: https://www.linkedin.com/in/allanbowe/ +previewImg: './derived-grid.png' +tags: + - Data Controller + - Features +--- + +# Derived variables: computed columns you can filter on + +A customer asked for something simple and awkward: a column in the EDIT screen that is not in the table. A region worked out from a state code. A line value that is quantity times price. Not stored, not loaded, just *there* - and, they added, filterable. + +The "not stored" part is easy. The "filterable" part is where the design lives, and it is worth writing down, because it explains every other decision in the feature. + +## Why a computed column is not automatically filterable + +You would write it in a DATA step: + +```sas +data out; + set mylib.mytable; + REGION = ifc(STATE in ('CA','OR','WA'),'West','East'); + where REGION = 'West'; +run; +``` + +That fails. A `WHERE` statement applies to the data set named on the `SET` statement - the *input* - and on that input `REGION` does not exist. SAS cannot see a variable that the same step creates later. You can put the assignment and the filter in separate steps, but then the filter runs after the step has read every row, which is precisely the work the filter exists to avoid - and for a large table that is the difference between a fast screen and a coffee break. + +So the calculation has to happen somewhere the filter can see it. In Data Controller it happens in a **DATA step view**: + +```sas +data work.vw_derived / view=work.vw_derived; + set mylib.mytable; + attrib REGION length=$8 label='REGION=ifc(...)' format=$8.; + REGION = ifc(STATE in ('CA','OR','WA'),'West','East'); +run; + +data out; + set work.vw_derived; + where %inc filtref;; +run; +``` + +The view is not executed when it is defined. When the second step reads it, the assignment runs as part of the view's step, so by the time the `WHERE` is evaluated `REGION` is a column of the input. The filter is unchanged, the row-level security clause is unchanged, and nothing extra is read. + +## What it looks like + +The demo table below has four rows. `LINE_VALUE` is `QTY * PRICE`, `REGION` is derived from `STATE`, and `REGION_LABEL` is built on `REGION`. None of the three is a column of the table, and all three are read-only in the grid: + +![](./derived-grid.png) + +Because they are on the input to the filter, they filter like any other column. Here is `REGION = 'West'`, with the filter bar naming the derived variable: + +![](./derived-filter-region.png) + +and a numeric one, `LINE_VALUE > 50`: + +![](./derived-filter-value.png) + +The value list in the filter dialog is built the same way, from the table under the rest of the filter - so a derived column gets a dropdown of its distinct values, not a blank box. + +## Configuration + +`MPE_DERIVED` is itself a Data Controller table, so it is maintained through the EDIT screen with the usual submit / review / approve workflow. One row per variable: + +``` +VAR_NM REGION +VAR_DEPS STATE +VAR_TYPE C +VAR_LEN 8 +VAR_FMT (blank) +VAR_LABEL (blank) +VAR_LOGIC ifc(STATE in ('CA','OR','WA'),'West','East') +ACTIVE 1 +``` + +and the chained one: + +``` +VAR_NM REGION_LABEL +VAR_DEPS REGION STATE +VAR_TYPE C +VAR_LEN 14 +VAR_FMT (blank) +VAR_LABEL Region and state +VAR_LOGIC cats(REGION,'-',STATE) +ACTIVE 1 +``` + +Which produces, at read time: + +```sas +attrib REGION length=$8 label='REGION=ifc(STATE in (''CA'',''OR'',''WA''),''West'',''East'')' format=$8.; +REGION = ifc(STATE in ('CA','OR','WA'),'West','East'); +attrib REGION_LABEL length=$14 label='Region and state' format=$14.; +REGION_LABEL = cats(REGION,'-',STATE); +``` + +Type and length are declared rather than guessed, so a value is truncated exactly as specified. The format is optional; when it is left blank a character variable gets `$.` and a numeric one `.`, and a date, time or datetime format makes the column render - and filter - as a date, the same way a stored column does. The label is `VAR_LABEL` when you supply one, otherwise the name, an equals sign and the expression, so a user who switches labels on can see where the value came from. + +## Dependencies, without a sequence number + +`REGION_LABEL` needs `REGION` to exist first. Rather than maintain a sort order, each row declares its inputs in `VAR_DEPS`, and the statements are emitted in dependency order. Adding a variable in the middle of a chain means editing one row's `VAR_DEPS`, not renumbering the table. + +`VAR_DEPS` lists *every* input - physical columns and derived variables alike - and the declaration is checked against the expression in both directions: a derived variable the expression references must be declared, and a declared name the expression does not reference is an error. A declared name must be a column of the table or a derived variable of the same table, and a cycle is rejected with the path that forms it: + +``` +VAR_DEPS contains a cycle: A -> B -> C -> A +``` + +## What it will not do + +**Expressions only.** `VAR_LOGIC` must be a single SAS expression. Semicolons, macro triggers (`%`, `&`) and comments are rejected, so one row can never be more than an expression - which is the point: a config table is not a place to write programs. Conditional logic is available through functions such as `ifc()`, `choosec()`, `cats()`, `catx()`, `put()`, `input()` and `intnx()`. + +**No shadowing, no self-reference.** A derived variable may not reuse the name of a column in the target table. Nor may it reference itself: `SUMMER = SUMMER + 1` implies a retained value, which depends on the order rows happen to arrive in. + +**Never stored.** Derived values are computed on every read. Nothing derived is submitted, reviewed or written back - the approval package contains physical columns only, and a crafted submission that includes a derived column is discarded before the security check runs. + +**EDIT screen only, for now.** The VIEW screen and the download services do not show derived columns. A saved filter that references one still applies there and is evaluated the same way. + +**Not for row level security.** A rule in `MPE_ROW_LEVEL_SECURITY` cannot reference a derived column: the rule is evaluated against the submitted data, where the column does not exist. Saving a rule that names one is rejected with an explanation rather than left to fail at submit time. + +## One warning + +An expression can reference a column that is hidden from a user by [Column Level Security](https://docs.datacontroller.io/column-level-security/) - and the derived column will show the result. Configure derived variables with the same care as any other data exposure. + +## Availability + +Derived variables ship in the next release, on SAS 9, Viya and SASjs Server. The configuration table, the settings and the post-edit validation are created by the usual upgrade - there is nothing to install beyond the release itself. + +The full reference, including every column of `MPE_DERIVED` and the validation rules applied at submit time, is in the [docs](https://docs.datacontroller.io/derived-variables/).