Funktioner¶
Designern¶
- SVG-designyta — dra tabeller till ytan, dra pilar från källkolumner till målkolumner.
- Flera källtabeller → en: lägg till flera SQL-tabeller och dra en linje mellan nyckelkolumner för JOIN (INNER/LEFT). Verktyget genererar SELECT-frågan.
- Transformationer per kolumn:
Trim,UpperCase,LowerCase,EmptyToNull. - Draft-mål: skapa en ny måltabell direkt på ytan — dra källkolumner till målsidan så byggs schemat upp, skapa sedan tabellen i databasen med ett klick.
- C#- och Python-skript i transformationssteget (efter mappningar, innan laddning).
- Post-load-SQL körs på målservern efter laddningen (
UPDATE,MERGE,EXEC …). - Variabler / parametrisering — deklarera
{{namn}}-variabler och referera dem i extract-SQL, post-load-SQL, måltabellnamn eller en request-body, så att en pipeline blir konfigurationsstyrd i stället för hårdkodad. Inbyggda makron{{run_date}},{{run_timestamp}}och{{watermark}}finns alltid;{{watermark}}motsvarar senaste lyckade high-watermark-värdet, vilket är så en inkrementell extract filtrerar på det (WHERE ModifiedDate > '{{watermark}}'). En odeklarerad referens avbryter körningen innan någon I/O. - Metadatadriven generering — använd en mall-pipeline (en med
{{variabler}}) som stencil och skapa en pipeline per rad i en bindningsmängd: klistra in rader, eller peka på en kontrolltabell (SELECT table_name AS table, schema_name AS schema FROM etl_config WHERE enabled = 1) där varje rads kolumner blir variabelvärdena. Förhandsgranska, generera sedan; kopiorna grupperas ihop i Arbetsflödesvyn. Bygg en laddning, kör den för femtio tabeller.
Körning och observabilitet¶
- Realtidsstatus via SignalR — progress per steg utan polling.
- Tidtagning per steg (Extract, Transform, Script, Load, Post-load SQL).
- Felhantering —
skipBadRows: provladdning medSqlBulkCopy, fallback rad-för-rad vid fel utan att stoppa körningen. - Karantän (dead-letter) — med
quarantineBadRowsskrivs varje rad somskipBadRowshoppar över (tillsammans med laddningsfelet, en UTC-tidsstämpel och pipeline-etiketten) till en karantäntabell som skapas vid körning första gången och behålls mellan körningar, så att inget tappas tyst. Standardnamn är<mål>_Quarantine; ändra medquarantineTable. - Datakvalitetsregler (expectations) — regler per kolumn (
NotNull,NotBlank,Regex,Range,InSet,MaxLength) som kontrolleras mot målets mappade rader innan de laddas. En bruten Fail-regel avbryter körningen innan den felaktiga chunken laddas (en icke-strömmande laddning rullas då tillbaka helt); Warn-regler räknar bara överträdelserna på körningen och i notiser. - Transaktion runt DELETE/bulk load med TRUNCATE-fallback.
Arbetsflöden och schemaläggning¶
- Arbetsflödesvyn listar alla sparade pipelines med cron-schema och enable-toggle.
- Schemaläggaren (Quartz.NET) körs i servern — pipelines körs även utan öppen webbläsare.
- Körhistorik med per-steg-detaljer i Runs-vyn.
Data Vault-automation¶
Data Vault-vyn är en visuell modellerare: dra in flera källtabeller på en yta och designa hela valvet på en gång.
- Anslut och dra in tabeller — dubbelklicka på källtabeller för att lägga dem på ytan. Varje kolumn klassas automatiskt som business key (primärnyckel) eller deskriptor; klicka på rollrutan (BK/D/—) för att ändra.
- Dra relationer — dra från en kolumn till en annan tabell för att skapa en
länk; verktyget föreslår även länkar automatiskt utifrån lika nyckelnamn. Varje
relation blir en
Lnk_mellan de två hubbarna. - Generera — för varje tabell bygger verktyget:
stg_<Entitet>— en stage-tabell med källkolumnerna plus persisted computed hash-kolumner (hash-nyckel, hash-diff, länk-hashar) ochLoadDate/RecordSourceHub_<Entitet>med hash-nyckel, business key(s),LoadDate,RecordSourceSat_<Entitet>medHashDiffför CDC av deskriptorernaLnk_<Entitet>_<Ref>för varje ritad relation- en stage-laddning (källa → stage) plus en körbar Hodor-pipeline per vault-tabell
- Tillämpa — skapar scheman och tabeller och sparar pipelines som dyker upp i Workflows-vyn (grupperade per entitet), redo att köras eller schemaläggas.
Hashningen sker i stage-lagret (DV 2.0 "hash in stage"). Eftersom hub-, sat- och link-laddningarna läser från stage-tabellen är de insert-only, idempotenta och oberoende av varandra och av laddningsordning — de kan köras när som helst och parallellt. Endast stage och vault behöver dela databas; källan kan ligga var som helst (en lake, CSV, REST-API, en annan server), eftersom bara stage-laddningen rör källan.