i2bIntelligence to Base

Correcting a migration

The analysis is a reading of somebody else’s database, and a reading can be wrong. Six things can be corrected by hand. All six are decisions kept in one record per workspace — not a second copy of your schema — and every one of them is reversible: a decision taken back leaves what the analysis found in its place.

Every correction reaches the dry run and the migration alike. That is the point of making them: a decision the rehearsal did not obey would be a decision that means nothing.

1.A relationship that is wrong

Interactive Knowledge Graph

Click the line — the writing on it works, and so does the line itself. If the line runs under a table box or under the filter panel in the corner, select the table instead: its panel lists the relationships it takes part in, and each one opens the same place.

This link is wrong removes it from the canvas and remembers it, so the next reading does not find it again. Rejected links are listed in the filter panel with a Restore beside each. A link that was never found can be drawn: drag from the bottom of one table to the top of another and say which column points at which.

2.A table read as the wrong thing

Interactive Knowledge Graph

Select the table. What this table holds is the canonical entity it was understood to be, and it says whose word that is — the preset’s or yours.

Where one table holds several kinds of thing — WordPress keeps posts, pages, products, orders and media in wp_posts — say which rows are which under Only the rows where … is …. The key of a row can be marked here too, for a dump that declares none.

3.A value buried inside a cell

Schema List, inside a table

Three shapes, one decision. A serialised array or a JSON object inside one column; an attribute store, where Magento keeps a product’s name under a number and only the dictionary knows what the number means; and one table per field, which is how Drupal holds everything a site added.

Each key can go to a canonical field, become a column of its own, or be left out. The tree is read from real rows of your database — five of them — so what you are answering is what is actually there rather than what the shape suggests.

4.Something that would be lost

Migration Gaps

Every column gets one of five dispositions, and only the unaccounted ones ask for a signature. Carry it offers the fields that table could still fill; answering one, saving, and working the losses out again removes it from the list.

A separate group, kept in the pocket, no field of their own, is not a loss: those columns arrive in the target’s catch-all because nothing named them. They block nothing and need no signature — and each offers a field to be given instead, which is the only way a value stops being an anonymous leftover.

5.A row that is wrong, or should not travel

Data Instances Graph

Press Rows for the list: pick a table, search across every value, turn a page. Selecting a row opens its values, and each can be corrected. Corrected values are shown in the list so the decision is visible without opening the row again.

Do not carry this row leaves one row out of the migration — the test order, the duplicate customer — and the row stays on screen, struck through, with the same button reading Carry it after all. Show this row in the target asks the migration itself what that row becomes, with every correction applied and nothing written.

6.The order of the work

Workflow Pipeline

Assemble your own process from the eight kinds of step, in your order. Steps can be moved, taken out, or switched off — off keeps the step in its place with its name, and the order is then checked as the process that would actually run.

A step out of order is explained rather than refused: a migration with no rehearsal before it says so in red and stays where you put it. Each step opens the screen that performs it; i2b does not run your process for you.

What this does not do

Corrections change what i2b does with your data. They never change your data: the source is read, and the decisions live on our side.

There is no formula language. A row filter is “only the rows where this column is one of these values”, and a computed column joins, copies or splits what is already there — deliberately short of a language, because a language in a migration is a thing nobody can review.

Nothing runs unattended. There is no server-side runner working through your pipeline while you are away; each step is a screen somebody opens.

A row that is not in your source cannot be added, and a step’s parameters cannot be edited yet.

Keeping corrections between sessions needs a licence — which one. Making them, and reading every report, does not.

Correcting a migration — i2b Help