3 Commits
Author SHA1 Message Date
blog-dev 3d66f91820 fix(feed): correct docs link to /restore/
publish / Build-and-publish (push) Successful in 12m54s
2026-08-20 22:26:03 +01:00
blog-dev 5cdfadf75c feat(feed): use ctrl-z as cover, move trains meme into post body
publish / Build-and-publish (push) Successful in 13m0s
2026-08-20 22:20:56 +01:00
hermes fef2c3c12e chore: li update
publish / Build-and-publish (push) Successful in 12m58s
2026-08-20 22:14:47 +01:00
2 changed files with 9 additions and 5 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 754 KiB

+9 -5
View File
@@ -6,7 +6,7 @@ author: 'Data Controller'
authorLink: https://www.linkedin.com/showcase/data-controller-for-sas authorLink: https://www.linkedin.com/showcase/data-controller-for-sas
tags: tags:
- Announcements - Announcements
previewImg: './rollback-trains-meme.jpeg' previewImg: './ctrl-z.jpeg'
--- ---
# Oops! Now You Can Roll Back Data Changes # Oops! Now You Can Roll Back Data Changes
@@ -15,6 +15,8 @@ Despite the MANY checks and guarantees in Data Controller for SAS®, sometimes i
Thankfully, it is now possible to **roll back** data changes to a previous state. Thankfully, it is now possible to **roll back** data changes to a previous state.
![Two trains colliding - the wrong data changes applied](rollback-trains-meme.jpeg)
## How it works in practice ## How it works in practice
Behind the scenes, rollback is not a silent undo. It is a **first-class approval workflow** just like any other edit. When you choose to restore a previous version, the backend - via the [`%mp_stripdiffs`](https://core.sasjs.io/mp__stripdiffs_8sas.html) macro - reads the `MPE_AUDIT` table (or a custom `AUDIT_LIBDS` configured for the table) and computes every difference between the current state and the version you want to go back to. Behind the scenes, rollback is not a silent undo. It is a **first-class approval workflow** just like any other edit. When you choose to restore a previous version, the backend - via the [`%mp_stripdiffs`](https://core.sasjs.io/mp__stripdiffs_8sas.html) macro - reads the `MPE_AUDIT` table (or a custom `AUDIT_LIBDS` configured for the table) and computes every difference between the current state and the version you want to go back to.
@@ -46,16 +48,18 @@ Because the rollback creates a new, approved changeset rather than silently rewi
This feature works for all temporal-aware load types (`UPDATE`, `TXTEMPORAL`, and `BITEMPORAL`) and respects SCD2 validity windows. And the whole process is built on the same open-source macro library that powers the rest of Data Controller - so you can inspect, test, and audit the code itself. This feature works for all temporal-aware load types (`UPDATE`, `TXTEMPORAL`, and `BITEMPORAL`) and respects SCD2 validity windows. And the whole process is built on the same open-source macro library that powers the rest of Data Controller - so you can inspect, test, and audit the code itself.
Full documentation is here: https://docs.datacontroller.io/rollback-data-changes/ Full documentation is here: https://docs.datacontroller.io/restore/
<!-- <!--
Source LinkedIn post: Source LinkedIn post:
"Which submission introduced this value?" should never be a hard question to answer.
Yet for many teams managing reference data, mappings, and regulatory adjustments in SAS®, a wrong approval means exactly that - an uncomfortable audit conversation, a forensic exercise, and a quiet hope that nobody upstream consumed the bad data.
Data Controller now lets you ROLL BACK a table to a previous state. "Can we put it back the way it was?" should never be a hard question to answer.
Yet for many teams managing reference data, mappings, and regulatory adjustments in SAS®, a wrong approval means exactly that — a forensic exercise, an uncomfortable audit conversation, and a quiet hope that nobody upstream consumed the bad data.
Data Controller now lets you ROLL BACK a table to any previous state.
Not by silently rewinding history - the one thing your auditor definitely does not want. Instead, the reversion is packaged as a brand NEW change that goes through the same review and approval as any other edit: Not by silently rewinding history - the one thing your auditor definitely does not want. Instead, the reversion is packaged as a brand NEW change that goes through the same review and approval as any other edit: