# Deshacer y restaurar Nexus guarda cada cambio de cada tabla, así que una carga mala, filas de prueba de la IA o una app en vivo con un fallo se pueden restaurar. Hay cuatro formas, de la más pequeña a la más amplia. | Quiere | Use | Quién | | --- | --- | --- | | Deshacer todo en una tabla después de un punto | **Volver a esta versión** en el Historial de la tabla | Quien puede cambiar la tabla | | Deshacer solo lo que cambió una fuente, sin tocar el trabajo de los demás | **Restaurar** en Gestión de datos | Propietarios y administradores | | Deshacer lo que la IA o su app en vivo cambió en un proyecto | **Deshacer** en la pestaña Datos del proyecto | El propietario del proyecto, propietarios y administradores | | Ver una tabla como estaba, sin cambiarla | **Recuperar una copia** en Gestión de datos | Propietarios y administradores | **Restaurar** y **Recuperar una copia** en Gestión de datos solo se muestran a propietarios y administradores. ## Cuánto tiempo se guardan los cambios [#cuánto-tiempo-se-guardan-los-cambios] Su plan decide ambas cosas. En **Gestión de datos** (barra lateral de Datos), el panel **Seguridad de datos** muestra **Cambios conservados** y **Elementos eliminados recuperables**, en días, y cuándo se verificó por última vez que cada archivo se puede leer. ## Volver a una versión anterior de una tabla [#volver-a-una-versión-anterior-de-una-tabla] Úselo cuando toda una carga o edición estuvo mal y no hay nada posterior que conservar. ### Abra el historial de la tabla [#abra-el-historial-de-la-tabla] En **Nexus Lakehouse**, abra la tabla y seleccione la pestaña **Historial**. ### Elija la versión [#elija-la-versión] Busque la última versión buena. Cada una muestra qué cambió, quién y cómo. ### Vuelva [#vuelva] Seleccione **Volver a esta versión** y luego **Volver** para confirmar. Se deshace cada cambio posterior. ```python title="rollback.py" from klarety import Nexus with Nexus.connect() as nx: history = nx.tables.snapshots("orders") print(history) nx.tables.rollback("orders", snapshot_id=1234567890) ``` Use un `snapshot_id` de `snapshots()`. Volver a antes de un borrado definitivo se rechaza, pues traería filas que se prometió eliminar. ## Restaurar lo que cambió una fuente [#restaurar-lo-que-cambió-una-fuente] Úselo cuando varias fuentes escriben en las mismas tablas y solo una falló. Revierte los cambios de esa fuente valor por valor y deja intacto el trabajo de los demás. ### Abra Gestión de datos [#abra-gestión-de-datos] En , abra **Gestión de datos** desde la barra lateral. ### Encuentre el cambio [#encuentre-el-cambio] En **Qué cambió**, elija una tabla para ver los últimos 7 días: el **Día**, **Quién**, **Mediante** (por ejemplo filas editadas, SQL o una carga de archivo), y cuántas filas fueron **Agregadas** y **Modificadas**. Seleccione **Restaurar** en la fila que falló. ### Elija el alcance [#elija-el-alcance] En **Restaurar**, revise **Cambios de quién** y elija **Cuándo**: la última hora, el último día o los últimos 7 días. ### Vea la vista previa [#vea-la-vista-previa] Seleccione **Ver qué cambiaría** para saber cuántas filas se restaurarían, cuántas filas agregadas se quitarían y en cuántas tablas. Las filas que otra persona cambió después se quedan como están. ### Restaure [#restaure] Seleccione **Restaurar** y confirme, o **Dejar como está** para no cambiar nada. El panel **Actividad** lista cada restauración realizada. **Marcadas por nosotros** señala filas escritas desde el Studio de un proyecto que parecen entradas de prueba, para detectarlas antes de que lleguen a un informe. Nada cambia hasta que aplica. `author` es uno de `studio`, `app`, `web`, `sdk`, `mcp` o `watch`. ```python title="put_back.py" import time from datetime import UTC, datetime, timedelta from klarety import Nexus with Nexus.connect() as nx: now = datetime.now(UTC) preview = nx.restores.preview( since=now - timedelta(hours=6), until=now, author="app", tables=["orders"], ) restore_id = preview["restore_id"] while nx.restores.get(restore_id)["state"] == "previewing": time.sleep(2) ready = nx.restores.get(restore_id) print(ready["tables"]) if ready["state"] == "previewed": nx.restores.apply(restore_id) ``` La vista previa se calcula en segundo plano: espere a que `state` sea `previewed`, lea qué cambiaría y luego aplique. Después de aplicar, el estado pasa por `restoring` a `restored`. Una vista previa no respondida a tiempo termina como `expired`; repítala. Llame a `decline(restore_id)` para descartar una vista previa. `restores.list()` muestra qué hizo cada restauración, de la más reciente a la más antigua. Estas llamadas requieren la clave de un propietario o administrador. ## Deshacer lo que cambió un proyecto [#deshacer-lo-que-cambió-un-proyecto] Abra un proyecto y su pestaña **Datos**. **Qué cambió esta semana** muestra **Cambios hechos por la IA** y **Cambios hechos por su app en vivo**. Seleccione **Deshacer**, revise las filas que cambiarían y seleccione **Deshacerlo**. Al terminar verá **Listo. Todo volvió a quedar como estaba.** Desde código, use `nx.restores.preview()` con `author="studio"` para la IA o `author="app"` para la app en vivo, como arriba. ## Recuperar una copia de una tabla tal como estaba [#recuperar-una-copia-de-una-tabla-tal-como-estaba] Úselo para ver datos antiguos, compararlos con hoy o recuperar una tabla eliminada, sin tocar la tabla en uso. ### Abra el formulario de copia [#abra-el-formulario-de-copia] En **Gestión de datos**, dentro de **Restaurar**, busque **Recuperar una copia de una tabla tal como estaba en un momento**. ### Elija la tabla y el momento [#elija-la-tabla-y-el-momento] **Elija una tabla** y escriba **Estado en esta fecha y hora, en UTC**. ### Vea la vista previa y confirme [#vea-la-vista-previa-y-confirme] Seleccione **Ver vista previa de la copia** y luego **Restaurar**. La copia aparece como una tabla nueva; la original no cambia. ```python title="copy_as_of.py" import time from datetime import UTC, datetime from klarety import Nexus with Nexus.connect() as nx: preview = nx.restores.copy(["orders"], at=datetime(2026, 10, 1, 12, 0, tzinfo=UTC)) restore_id = preview["restore_id"] while nx.restores.get(restore_id)["state"] == "previewing": time.sleep(2) nx.restores.apply(restore_id) ``` Una copia llega tan atrás como se guardan los cambios, incluso para una tabla eliminada después. ## Restaurar una tabla eliminada [#restaurar-una-tabla-eliminada] ```python for table in nx.tables.deleted("default"): print(table) nx.tables.restore("orders", schema="default") ``` Una tabla eliminada se puede restaurar hasta que termine el plazo de su plan para elementos eliminados. Una tabla eliminada se puede restaurar hasta que termine el plazo de su plan para elementos eliminados, por un desarrollador con el SDK (vea la vista de desarrolladores). Las carpetas y archivos eliminados se restauran desde la papelera, vea [Almacenamiento de objetos](/docs/es/data/object-storage#papelera). ## Lo que no se puede deshacer [#lo-que-no-se-puede-deshacer] Revise antes de usarlos: no hay vuelta atrás. - **Borrar filas definitivamente.** `nx.tables.erase()` elimina los datos mismos, para poder demostrar que ya no están. No se puede deshacer, y volver a una versión anterior se rechaza. - **Eliminar para siempre** y **Vaciar papelera** en Almacenamiento de objetos. - Todo lo que sea más antiguo de lo que guarda su plan. ## Siguientes pasos [#siguientes-pasos] - [Trabajar con tablas](/docs/es/data/tables): lea el historial de una tabla. - [Almacenamiento de objetos](/docs/es/data/object-storage): la papelera de carpetas y archivos. - [Acceso a datos](/docs/es/data/data-access): guarde los cambios de alguien en su propia copia.