Changelog

Version 3.0

Versions Highlights

Da Python 2.x mit 01.01.2020 nicht mehr weiterentwickelt, bzw. nicht mehr mit Sicherheitsfixes versorgt wird, unterstütz NCDiff ab dieser Version nur noch Python mit Version größer als 3.6.

Achtung

Unterstützung für Python 2.x wurde gestrichen, da auch das Python Projekt selbst die Version 2.x nicht mehr weiterentwickelt! Mindestens Pyhton 3.6 wird für NCDiff vorausgesetzt.

Aktuell wird NCDiff mit Python 3.6, 3.7 und 3.8 automatisiert getestet.

Wesentliche Änderungen im Detail

  • Unterstützung für Python 2.x wurde entfernt

  • Für die Python 3 Unterstützung wurden alle Bibliotheken aktualisiert und der Code auf Python 3 angepasst.

  • Zur Unterstützung von CI Systemen wie Jenkins oder Jira kann mit dem Ausgabeformat „JUNIT“ für einen Anbgleich auch eine jUnit XML Datei geschrieben werden. Dieses kann dann in Jira oder Jenkins importiert werden.

Version 2.8

Versions Highlights

NCDiff hat bis zur Version 2.7.0 ausschließlich Python 2.6.x und 2.7.x unterstützt. Mit dieser Version wurde NCDiff auf Python 3 portiert und unterstütz nun Python 2.7.x und alle Python Versionen größer 3.3.x.

Achtung

Unterstützung für Python 2.6.x wurde gestrichen, da auch das Python Projekt selbst die Version 2.6.x nicht mehr weiterentwickelt!

Aktuell wird NCDiff mit Python 2.7, 3.3 und 3.6 automatisiert getestet und die Performance hinsichtlich Laufzeit und Speicherverbrauch ist mit der aktuellen Python Version 3.6.2 am besten. Benutzern wird deshalb empfohlen auch für NCDiff Python 3.6 zu verwenden.

Wesentliche Änderungen im Detail

  • Unterstützung für Python3

  • Für die Python 3 Unterstützung wurden alle Bibliotheken aktualisiert und der Code auf Python 3 angepasst.

Version 2.7

Versions Highlights

NCDiff wird häufig bei Regressionstests verwendet. Dabei werden meist iterativ Tests ausgeführt, die Ergebnisse werden mittels NCDiff mit den Erwartungswerten verglichen und danach Probleme analysiert und behoben. Üblicherweise werden automatisiert regelmäßig NCDiff Vergleiche gestartet um die iterativen Verbesserungen nachvollziehen zu können.

Um den Fortschritt zu visualisieren bietet NCDiff nun ein einfaches ncdiff-history Tool um aus den NCDiff Ergebnissen eine HTML Übersichtsseite zu generieren.

Wesentliche Änderungen im Detail

  • Pre- und Post Prozessor

    Bisher bestand die Möglichkeit über eine Erweiterung eine Pre-Prozeß Schritt vor der NCDiff verarbeitung zu implementieren. Nun wurde dies wesentlich ausgeweitet und man kann nun spezifisch vor jedem Target und jeder Konfiguration und jedem NCDiff Aufruf Pre-Prozeß Schritte durchführen lassen.

    Zusätzlich wurde nun auch die selbe Logik für Post-Prozeß Schritte hinzugefügt um auch nach einem Target, Konfiguration oder NCDiff Aufruf kundenspezifische Schritte auszuführen.

  • Anzeigen des Ergebnisses

    Mit dem neuen Kommandzeilenparameter showResult wird nach der Ausführung eines NCDiff Vergleichs automatisch der Betriebssystem-Viewer für die Statistikdatei im gewünschte Ausgabeformat geöffnet. Für HTML wird also der Default-Browser oder für Exceldateien entsprechen Microsoft Excel aufgerufen.

  • Quotierung für Spaltennamen

    Spaltennamen in der Konfigurationsdatei können nun mit einfachen oder doppeltem Hochkomma quotiert werden. Damit wird der Inhalt als Text interpretiert, was hilfreich ist wenn ein Spaltenname einer Nummer entspricht. Diese wurde bisher immer als Spaltenindex behandelt. Als Beispiel

    bothKeyColumns = „20160912"
    

    Der Wert 20160912 wird nun als Spaltenname interpretiert und nicht mehr als Spaltenindex 20160912 – der vermutlich nicht existiert.

  • Farbiges Log in der Konsole

    Bisher wurde in Launcher Log-Fenster der Output von NCDiff in verschiedenen Farben angezeit. Nun wird auch dies auch bei einem Kommandzeilenaufruf in der Konsole gemacht.

  • Negative Spaltennummern

    Überall wo Spaltennummern verwendet werden können, kann man nun auch negative Nummern verwenden. Mit den negativen Nummern referenziert man die Spalten vom Ende beginnend. Ein -1 referenziert damit die letzte Spalte, die -2 die vorletzte Spalte und so weiter.

  • API Dokumentation aktualisiert

    Die API Dokumentation wurde aktualisiert und hat nun ein moderneres Format welches besser mit aktuellen Browsern zu benutzen ist.

Version 2.6

Versions Highlights

Als neues Ausgabeformat der Ergebnissreports kann nun *.xlsx erzeugt werden. Damit werden Microsoft Excel Dateien im Excel 2007 Format erzeugt. Der wesentliche Vorteil ist das dieses Dateiformat nun 1024 Spalten und 1 Million Zeilen unterstützt.

Die HTML Reporterzeugung wurde auf die Template-Engine „Mako“ umgestellt. Damit kann der HTML einfacher, schneller und umfangreicher angepasst werden.

Es wurde diverse kleinere Fehler korrigiert.

Wesentliche Änderungen im Detail

  • XLSX Reports

    Durch das konfigurieren des Reportformats XLSX mittels:

    resultFormats = XLSX
    

    können nun die Reports in Microsoft Excel 2007 Format erzeugt werden.

    Der wesentliche Vorteil ist das nun 1024 Spalten und 1 Million Zeilen durch das Format unterstützt werden. Besonders bei großen Datenmengen ist das alte Microsoft Excel 2003 Format mit 256 Spalten und 65536 schnell an seine Grenzen gestoßen. Das alte XLS Format wir aber weiterhin unterstützt.

    Dem XLSX Report wurde auch noch ein weiterer Reiter hinzugefügt um die verwendete Konfiguration für ein bestimmtes Target im Report anzuzueigen.

    Das XLSX Format ist analog zu XLS zu verwenden. Das heißt man kann mit XLSTemplate auch ein Template spezifizieren. Das Default-Template ist auch im Subverzeichnis templates zu finden und heißt template_green-grey.xltx. Eigene Templates können anhand dieses Beispiels erzeugt werden und müssen als Excel-Template mit Endung „.xltx“ abgespeichert werden.

  • HTML Template

    Die HTML Reports werden nun mittels der Template-Engine „Mako“ erstellt. Dazu werden HTML Templates im Verzeichnis „templates“ verwendet, die HTML und spezielle Mako Kommandos enthalten.

    HTML kann nun wesentlich einfacher angepasst und verändert werden, da bisher immer Codeänderungen in Python nötig waren. Zum Beispiel wurden nun in die HTML Ausgabe ein Link zur Log-Datei eingebaut, oder auch ein neuer Reiter „Config“ mit der für eine bestimmtes Target verwendete Konfiguration hinzugefügt.

    Der alte Mechanismus zur HTML Erzeugung kann immer noch verwendet werden, in dem man als Reportformat „HTMLS“ angibt.

  • Text Vergleich ohne Groß-Kleinschreibung zu beachten

    Text kann nun verglichen werden ohne die Groß-Kleinschreibung zu beachten. Dazu muss das betreffende Feld explizit für den Textvergleich konfiguriert werden und mittels des Parameters „i“ kann dieses Feature verwendet werden.

    Zum Beispiel wird hier die Spalte 5 als Text und die Spalte 10 auch als Text, aber ohne Groß-Kleinschreibung zu berücksichtigen verglichen:

  • Fehlerkorrekturen

    Bei fehlgeschlagenen Diff-Targets war es möglich das NCDiff einen Fehlermeldung über eine nicht gesetztes maxResultLines ausgibt auch wenn dieser Parameter nicht konfiguriert wurde.

    Wird für SQL-Input old/new/both/SQLConnection nicht konfiguriert, lieferte NCDiff ein Fehlermeldung bezüglich eines fehlenden SQLDriver Parameters.

    Wird resultFilterFilePath gesetzt, aber kein resultFilterDirectory gab NCDiff eine technische Fehlermeldung aus die nichts mit dem eigentlichen Problem zu tun hatte.

    HTML Report verwendet bei Tabellen nun immer eine abwechselnde Hintergrundfarbe für Zeilen.

Version 2.5.2

Wesentliche Änderungen im Detail

  • Kleinere Fehlerbehebungen und Bereinigungen

    Übersicht falsch wenn resultFilter für missing in old/new verwendet wird.

    Defaultparameter werden nun korrekt zwischen launcher restarts wiederhergestellt

  • Platzhalter im –configurations Parameter

    Werden mehere Konfigurationsdatien als Input definiert, musste man bisher eine Liste von Dateien spezifizieren, z.B.:

    ncdiff --configurations sst_set1.cfg,sst_set2.cfg
    

    Nun kann man aber Platzhalter „*“ für eine beliebige Zeichenkette und „?“ für ein bestimmtes Zeichen verwenden. Man könnte damit obiges Beispiel nun so Aufrufen:

    ncdiff --configurations sst*.cfg
    

    oder auch:

    ncdiff --configurations sst_set?.cfg
    
  • Zeiptstempel für Statistikdatei konfigurierbar

    Mit dem neuen Parameter statisticTimeStampFormat kann man ein Zeitstempelformat definieren das an das statistics.html/csv/xls angefügt wird.

    statisticTimeStampFormat=%Y-%m-%d
    

    Führt zu folgenden Statistikdateien:

    • statistic_2014-11-24.html

    • statistic_2014-11-24.xls

    • statistic_2014-11-24.csv

  • Kommentarspalte in statistic.xls

    In der Excel Statistikdatei wurde eine zusätzliche Spalte „Comment“ zwischen „Duplicate Keys“ und „Start Time“ eingefügt. Damit können Anwender auch in der Übersicht Kommentare zu den Verschiedenen Targets hinzufügen.

  • Hinweis wenn Anzahl der Fehler größer als die maxResultLines ist

    Wenn ein Target mehr als maxResultLines Unterschiede findet, werden in den Ergebnissdateien nur maxResultLines Unterschiede ausgegeben, obwohl merh gefunden wurden.

    Um für den Anwender so einen Fall leichter Erkenntlich zu machen wird in der neuen Kommentarspalte der statistics.xls ein Hinweis ausgegeben das mehr Fehler gefunden wurden als ausgewiesen werden.

Version 2.5.1

Wesentliche Änderungen im Detail

  • Kleinere Fehlerbehebungen und Bereinigungen

    Div. kleinere Fehler in der HTML Ausgabe.

    Rechts-/Linksbündig Formatierung der Statistik auf der Konsole.

    Warnungen über doppelt spezifizierte Konfigurationsparameter reduziert.

    Andere Darstellung von duplicate Results.

  • Falscher Ausschluss von Unterschieden bei der Angabe von absoluteTolerance oder relativeTolerance

    Die Unterschiede wurden bei der Verwendung von Toleranzen nicht richtig ausgeschlossen.

  • Result Filter: oldValue/newValue Spalten zur XLS Datei wieder hinzugefügt

    Diese beiden Spalten wurden aus der Version 2.5 entfernt, können aber zu Dokumentationszwecken von akzeptablen Unterschieden verwendet werden, und wurden wieder hinzugefügt.

    In Result Filter Dateien der Version 2.5 müssen daher diese beiden Spalten eingefügt werden damit diese verwendet werden können. Für den Fall dass die oldValue oder newValue Spalten für Einschränkungen ausreichend sind, ist eine vereinfachte Konfiguration möglich.

Version 2.5

Versions Highlights

In Version 2.5 enthalten ist eine Graphische Benutzeroberfläche für NCDiff damit Vergleichsläufe einfach durchgeführt werden können.

Es wurde diverse kleinere Fehler korrigiert.

Es können nun SQL Datenbanken verglichen werden.

Einträge in der Konfigurationsdatei dürfen nun mehrere Zeilen umspannen.

Es gibt eine vereinheitlichte Sprache um Filter (Row Filter, Toleranzen und Result Filter) zu definieren. Alte Konfigurationseinträge müssen umgestellt werden, da die Syntax nicht kompatibel ist.

Wesentliche Änderungen im Detail

  • Benutzeroberfläche für NCDiff

    Um die Arbeit mit NCDiff auf dem Desktop zu vereinfachen wird eine Graphische Benutzeroberfläche zur Verfügung gestellt, die es einfach macht Vergleiche mit NCDiff durchzuführen.

  • Fehlerkorrekturen

    Im XLS Writer werden Hyperlinks zwischen Sheets unter ‚ ‚ gestellt. Damit funktionieren nun auch Bezeichnungen die Sonderzeichen enthalten bei oldLabel und newLabel.

    In der DEFAULT Sektion der Konfigurationsdatei funktionieren nun auch Konfigurationseinträge richtig, die mit both beginnen, beispielsweise:

  • Vergleich von SQL Datenbanken

    Als Neuheit dieser Version wird das Eingabeformat SQL unterstützt. Mit den Parametern oldSQLDriver/newSQLDriver/bothSQLDriver ist die Auswahl der verwendeten Datenbank Engine möglich; z.B.: sqlite3, der Standard ist pyodbc. Mit pyodbc können ODBC Datenbanktreiber verwendet werden, allerdings muss diese Datenbank Engine extra installiert werden.

    Die Verbindung zur Datenbank ist ein Datenbank spezifischer Verbindungsstring und kann mit oldSQLConnection/newSQLConnection/bothSQLConnection angegeben werden. Die eigentliche Abfrage wird mit oldSQLQuery/newSQLQuery/bothSQLQuery spezifiziert. Hier kann entweder der Tabellenname oder ein select Statement angegeben werden.

    Die Parameter oldSQLFetchSize/newSQLFetchSize/bothSQLFetchSize dienen zur Performance Optimierung.

  • Konfigurationseinträge dürfen mehrere Zeilen umspannen

    Insbesondere die Konfigurationseinstellungen für die Spaltennamen und Toleranzen haben oft zu sehr langen Zeilen geführt. In Version 2.5 können diese auf mehrere Zeilen umgebrochen werden, sofern diese eingerückt sind. Zum Beispiel:

    [TARGET]
    bothColumnNames = Spalte1, Spalte2, Spalte3, Spalte4, Spalte5,
                      Spalte6, Spalte7, Spalte8, Spalte9, Spalte10
    
  • Vereinheitlichte Sprache für Filter

    Bis einschließlich Version 2.4 wurde in NCDiff eine Filterlogik verwendet, die für den jeweiligen Anwendungsfall zugeschnitten war. Ab Version 2.5 wird eine einheitliche Sprache zur Definition von Filtern und Constraints verwendet. Diese Sprache ist an die Formelsprache von Tabellenkalkulationsprogrammen angelehnt. Da die Sprachsyntax zwischen 2.4 und 2.5 unterschiedlich ist, müssen alle Filter auf das neue Format umgestellt werden. Dafür existiert kein automatischer Prozess. Betroffen sind die Einstellungen für:

    • Row Filter

    • Ignore Columns

    • Column Tolerances

    • Result Filter (definiert in einer XLS Datei)

    Im Folgenden einige Beispiele für die nötigen Umstellungsarbeiten.

    NCDiff V2.4 und älter

    NCDiff V2.5

    [TARGET]
    oldRowFilters = or(row_range(1; 10); not(contains(@D; 'CHF')))
    oldIgnoreColumns = 1,
                       3: startswith(@5; 'Deutsche')
    absoluteColumnsTolerances = 3: 5,
                                7: if(contains(@2; 'STOCK'); 30.0; 50.0)
    
  • Unterstützung für XBRL Format

    Ab der Version 2.5 unterstützt NCDiff auch das Datenformat XBRL (eXtensible Business Reporting Language). Dieses auf XML basierende Format wird vor allem für Reports, Meldungen, Berichte an „externe“ Kunden (Bundesbank, European Banking Authority, … ) benutzt.

    Die eigentliche XBRL (Facts) Datei ist zwar für den Benutzer lesbar (XML), da sich aber mehr als 90 Prozent der Informationen innerhalb der Datei auf Referenzen, Links und Konzepte des XBRL-Frameworks beziehen, kann der Standardbenutzer alleine mit dieser Datei nur wenig anfangen.

    Zur Visualisierung solcher Dateien stehen normalerweise eigene Applikationen zu Verfügung, die die entsprechenden XBRL-Formulare generieren und diese dann mit den „Facts“ aus der jeweiligen XBRL-Datei befüllen.

    Da der XBRL-NCDiff Vergleich auf Basis der ausgefüllen Formulare stattfindet, NCDiff selbst jedoch keine Reimplementierung eines XBRL-Frameworks enthalten sollte, wird hierfür auf eine externe Applikation zurückgegriffen, die nicht Teil des NCDiff Paketes ist. Da dieses Feature eine Abhängigkeit zu einer externen Anwendung bedeutet, wurde es nicht als Teil des NCDiff-Kerns implementiert, sondern als NCDiff-Extension.

    Das XBRL-Feature ist auch nicht Teil der Standardinstallation, sondern wird auf explizite Anfrage nachgeliefert. Weitere Information zur Installation und zur Abhängigkeit des können aus dem Benutzerhandbuch (Appendix A) entnommen werden.

Version 2.4

Versions Highlights

Für die neue Version 2.4 wurden viele Detailverbesserungen durchgeführt um das Tool mit CSV Dateien noch besser benutzbar zu machen.

Es können nun zusätzlich XML Dateien und unkomprimierte TAR Archive verglichen werden.

Eine weitere Neuerung stellt die Möglichkeit dar zwei Verzeichnisbäume vergleichen zu können.

Vorgefundene Differenzen können nun noch detailierter gefiltert werden. Um eine weitere Filterungsmöglichkeit, unabhängig von den Toleranzen, zu haben wurde das Feature geschaffen „bekannte Unterschiede“, auf Basis von Regeln, aus der Ausgabe ausfiltern zu können. Bei Bedarf können diese „bekannten Unterschiede“ aber auch nur als solche markiert werden.

Wesentliche Änderungen im Detail

  • CSV Konfiguration

    Die Konfiguration von CSV Dateien unterstützt nun das Ersetzen von zusätzlichen Spaltentrennzeichen durch das Standardtrennzeichen in unterschiedlichen Konfigurationen für die alte und neue Eingabedatei. Aus dem Parameter replaceDelimiters werden zwei: oldCSVReplaceDelimiters und newCSVReplaceDelimiters.

    Weiters wurden weitere Parameter eingefügt um die Quotierung von Feldern in CSV einstellbar zu machen. Diese sind oldCSVQuoting, newCSVQuoting, oldCSVQuotechar, newCSVQuotechar, oldCSVDoublequote, newCSVDoublequote, oldCSVEscapechar, newCSVEscapechar. Dadurch wird es nun möglich flexibler auf schwierige Eingabedaten zu reagieren. Beispielsweise lassen sich nun Felder im Format verarbeiten:

    Die Standardeinstellung führt zum Fehler "newline inside string", mit der Einstellung oldCSVDoubleQuote=False und newCSVDoublequote=FALSE erhält man als Ergebnis eine Liste aus drei Feldern mit dem Inhalt:

    Die vollständige Beschreibung der Parameter entnehmen Sie bitte dem Benutzerhandbuch.

  • Encoding für Eingabedateien

    Neu sind die Einstellungen oldEncoding und newEncoding mit welchen das Encoding der Zeichen in der Alt/Neu Eingabedatei bei Bedarf eingestellt werden kann. Beispielsweise legt ``newEncoding=cp1252` das Encoding der Neuen Eingabedatei auf die deutsprachige Windows Kodierung fest.

  • Ignorieren von Spalten mit Bedingung (oldIgnoreColumns, newIgnoreColumns)

    Es gibt jetzt die Möglichkeit Spalten vom Vergleich auszuschließen, wenn in eine Bedingung auf eine Spalte zutrifft.

    [TARGET]
    oldIgnoreColumns=A,C:cell_contains(B; RBS)
    newIgnoreColumns=1,3,4:cell_contains(2; Credit)
    
  • Support für XML Dateien

    Es besteht nun die Möglichkeit auch XML Dateien mittels NCDiff vergleichen zu können. Dabei tranformiert NCDiff die hierachische Datenstruktur einer XML Datei in eine tabellarische Datenstruktur einer CSV Datei.

    Diese CSV Datei kann nun wiederum mit all den bekannten Filtern, Toleranzen, Mappings, Datentypen, … gegen ein entsprechendes Pendante verglichen werden.

    [TARGET]
    oldFilePath=Report01.xml
    newFilePath=Report01.csv
    oldFormat=XML
    newFormat=CSV
    oldKeyColumns=[3:0]_InstrumentInstID,[3:0]_InstrumentISIN,[3:0]_InstrumentCurr
    newKeyColumns=InstrumentInstID,InstrumentISIN,InstrumentCurr
    
  • Support für Verzeichnisstruktur Vergleich

    Zwei Verzeichnisbäume können nun ebenfalls verglichen werden. Dabei wird für jedes Dateisystemobject das innerhalb eines Verzeichnissbaumes gefunden wird ein Datensatz in eine CSV Datei geschrieben.

    Diese CSV Datei kann nun wiederum mit all den bekannten Filtern, Toleranzen, Mappings, Datentypen, … gegen ein entsprechendes Pendante verglichen werden.

    [TARGET]
    oldFormat=DIR
    newFormat=DIR
    oldFilePath=ncdiff\examples\data
    newFilePath=ncdiff\examples\data
    newKeyColumns=RELPATH, NAME
    oldKeyColumns=RELPATH, NAME
    oldIgnoreColumns=ABSPATH,ATIME,MTIME
    newIgnoreColumns=ABSPATH,ATIME,MTIME
    oldColumnFormats=NAME:str, ABSPATH:str, RELPATH:str, EXTENSION:str, TYPE:int, DEPTH:int, SIZE:int,
        CTIME:datetime;%Y-%m-%d %H:%M:%S, ATIME:datetime;%Y-%m-%d %H:%M:%S, MTIME:datetime;%Y-%m-%d %H:%M:%S,
        USER:int, GROUP:int, HASH:str
    newColumnFormats=NAME:str, ABSPATH:str, RELPATH:str, EXTENSION:str, TYPE:int, DEPTH:int, SIZE:int,
        CTIME:datetime;%Y-%m-%d %H:%M:%S, ATIME:datetime;%Y-%m-%d %H:%M:%S, MTIME:datetime;%Y-%m-%d %H:%M:%S,
        USER:int, GROUP:int, HASH:str
    
  • Support für TAR Dateien

    Da es sich bei der Art von Daten die in einem TAR Archive hinterlegt sind zum Großteil um die selbe Art von Daten handelt die auch im Dateisystem benutzt werden war es auf Basis der Logik der Verzeichnisstrukturvergleichs möglich einen Vergleich von TAR Dateien zu implementieren.

    [TARGET]
    oldFormat=TAR
    newFormat=TAR.GZ
    oldFilePath=ncdiff.tar
    newFilePath=ncdiff.tar
    newKeyColumns=NAME
    oldKeyColumns=NAME
    newRowFilters=cell_equals_not(EXTENSION;xml)
    oldRowFilters=cell_equals_not(EXTENSION;xml)
    keepTempFiles=True
    

    Es werden sowohl unkomprimierte (TAR) also auch Archive die mittels GZip (TAR.GZ) bzw. BZip2 (TAR.BZ2) komprimiert wurden unterstüzt.

  • Filtern von bekannten Unterschieden

    Es handelt sich hierbei um eine neue zusätzliche Filtermöglichkeit um bekannte Unterschiede automatisch ausfiltern lassen zu können. Prozessual gesehen sind Result Filter den Toleranzen sehr ähnlich da Sie ebenfalls auf die vorgefundenen Unterschiede angewendet werden. Logisch sind Sie aber den Toleranzen nachgelagert.

    Ein weiterer Unterschied zu den Toleranzen ergibt sich dadurch das Result Filter im Gegensatz Row Filter bzw. Toleranzen in einem Excel Worksheet definiert werden und nicht direkt in der Konfigurationsdatei.

    Die Granularität der Konfigurationsmöglichkeiten von Result Filtern ist gegenüber Row Filtern und Toleranzen nochmals gestiegen. Außerdem ist die Übersicht über alle definierten Filter in einer Excel sehr viel leichter als in einer Konfigurationsdatei.

    [GLOBAL]
    resultFilterDirectory=data/filters
    
    [TARGET]
    resultFilterXLSSheetName=ResultFilterTarget01
    resultFilterFilePath=resultFilter.xls
    

    Eine Vorlage für ein Result Filter Excel Worksheet kann im templates Verzeichnis Ihrer NCDiff Installation gefunden werden

  • Farbliche Hervorhebung von Unterschieden in HTML

    Um sich sehr viel schneller einen Überblick über die Art der vorgefundenen Unterschiede zu verschaffen wurde verschiedene Typen (Missing, Duplicate, Difference) von Unterschieden mit verschiedenen Hintergrundfarben hinterlegt

    Zusätzlich wurden in den jeweiligen Data Views, wo man die dem Vergleich zu Grunde liegenden Datensätze in Ihrer Originalstruktur sehen kann, die Textfarbe derjenigen Zellen aus denen sich Unterschiede Ergeben mit roter Schrift versehen. Zusätzlich werden hier ebenfalls die schon von der Overview bekannten Hintergrundfarben genutzt um zusätzlich noch die Art des Unterschied zu symbolisieren.

  • Anzeigen von ausgefilterten Differenzen und Toleranzen

    Um feststellen zu können welche Differenzen aufgrund von Toleranzen bzw. Result Filtern aus dem Ergebniss einer Vergleichsoperation automatisiert herausgefiltert werden wurden zwei neue Konfigurationsparameter definiert die es ermöglich sich sowohl (filtered) als auch (tolerance) Unterschiede anzeigen zu lassen.

    [TARGET]
    showFilteredTolerance=TRUE
    showFilteredResults=TRUE
    

    In der HTML Ausgabe werden diese Datensätze mit jeweils einer eigenen Hintergrundfarbe dargestellt.

  • Farbliche Hervorhebung von Unterschieden in XLS

    Äquivalent zur farblichen Indikation in HTML wurde auch eine entsprechende Möglichkeit für Excel Dateien entwickelt.

    Hierfür wurde das existierende Excel-Template optional um 4 zusätzliche Formatdefinitionen erweitert.

    Das bisherige Format wird weiter unterstützt. Es steht jedem Kunden frei seine Excel-Templates selbständig umzustellen.

  • Ad-hoc Vergleiche

    Die Ad-hoc Funktionalität erlaubt es 2 Dateien zu vergleichen ohne das man dazu wie üblich wissen muß in welche Konfigurationsdatei sich das entsprechende Target befindet.

    Nachfolgender Aufruf startet einen Ad-hoc Vergleich.

    ncdiff <referenzDatei> <testDatei>
    

    Damit die Ad-hoc Funktionalität genutzt werden kann müssen mehrere Voraussetzungen erfüllt sein:

    • Konfigurationsdateien sind am besten zentral auf einem Share verwaltet

    • Die Umgebungsvariable NCDIFF_CFG_HOME muss definiert sein und zeigt auf das Verzeichnis wo sich die Konfigurationsdateien befinden bzw. können sie sich auch in einem der Unterverzeichnisse befinden.

    • Konfigurationsdateien enden auf das Kürzel *.cfg

    • Eine passende Konfigurationsdatei muss existieren!

    • Die Reihenfolge ist von Bedeutung da die referenzDatei immer gegen oldFilePath und die testDatei immer gegen newFilePath, im gleichen Target, verglichen wird.

    Nur wenn alle diese Vorraussetzungen erfüllt sind kann ein Ad-hoc Vergleich durchgeführt werden.

  • „Both“Feature für Konfiguration

    Die Erfahrung hat gezeigt das der Anteil der Konfigurationsparameter für „old“ and „new“ die komplett gleich sind sehr hoch ist.

    Um sich einerseits Konfigurationsaufwand zu erleichtern aber auch die Gefahr von versehntlichen Fehlkonfigurationsfehler zu minimieren existert jetzt neben der „new“ und „old“ Konfigurationsmöglichkeit auch noch die Möglichkeit beides via „both“ auf einmal zu konfigurieren.

    [TARGET]
    oldFormat=DIR
    newFormat=DIR
    oldFilePath=ncdiff\examples\data1
    newFilePath=ncdiff\examples\data2
    newKeyColumns=RELPATH, NAME
    oldKeyColumns=RELPATH, NAME
    oldIgnoreColumns=ABSPATH,ATIME,MTIME
    newIgnoreColumns=ABSPATH,ATIME,MTIME
    oldColumnFormats=NAME:str, ABSPATH:str, RELPATH:str, EXTENSION:str, TYPE:int, DEPTH:int, SIZE:int,
        CTIME:datetime;%Y-%m-%d %H:%M:%S, ATIME:datetime;%Y-%m-%d %H:%M:%S, MTIME:datetime;%Y-%m-%d %H:%M:%S,
        USER:int, GROUP:int, HASH:str
    newColumnFormats=NAME:str, ABSPATH:str, RELPATH:str, EXTENSION:str, TYPE:int, DEPTH:int, SIZE:int,
        CTIME:datetime;%Y-%m-%d %H:%M:%S, ATIME:datetime;%Y-%m-%d %H:%M:%S, MTIME:datetime;%Y-%m-%d %H:%M:%S,
        USER:int, GROUP:int, HASH:str
    

    Wird zu:

    [TARGET]
    bothFormat=DIR
    oldFilePath=ncdiff\examples\data1
    newFilePath=ncdiff\examples\data2
    bothKeyColumns=RELPATH, NAME
    bothIgnoreColumns=ABSPATH,ATIME,MTIME
    bothColumnFormats=NAME:str, ABSPATH:str, RELPATH:str, EXTENSION:str, TYPE:int, DEPTH:int, SIZE:int,
        CTIME:datetime;%Y-%m-%d %H:%M:%S, ATIME:datetime;%Y-%m-%d %H:%M:%S, MTIME:datetime;%Y-%m-%d %H:%M:%S,
        USER:int, GROUP:int, HASH:str
    

    Die Liste derjenigen Parameter die „both“ unterstützen entnehmen Sie bitte dem Benutzerhandbuch.

Version 2.3

Versions Highlights

Für die neue Version 2.3 wurden viele Detailverbesserungen durchgeführt um das Tool im alltäglichen Einsatz noch besser benutzbar zu machen. Besonders hervorzuheben sind Änderungen in der Konfiguration.

Zum Beispiel ist es nun möglich Spaltennamen zu verwenden (falls diese im File existieren oder Konfiguriert wurden). Des weiteren kann man nun auch mehrere Konfigurationsdateien für einen Diff-Durchlauf verwenden um einen gemeinsamen Ergebnisreport zu erhalten.

Wesentliche Änderungen im Detail

  • Spaltennamen für die Konfiguration

    In Konfigurationsdateien können nun neben Spaltennummern (beginnend mit 1) und Excel-Spaltenbezeichnern (A, B, …,AA, AB,…) auch die Spaltennamen aus der Inputdatei verwendet werden. Dies funktioniert natürlich nur falls die Datei eine Header-Zeile mit den Namen besitzt, oder die Spaltennamen explizit in der Konfiguration mittels old/newColumnNamnes gesetzt werden.

  • Spaltennamen automatisch zuordnen

    Werden zwei Dateien verglichen, die eine identische Anzahl von Spalten und identische Spaltennamen besitzen, aber die Position der Spalten ist unterschiedlich, musste man bisher mit mapColumnNames arbeiten. Dazu musste man z.B. folgende Zuordnung konfigurieren:

    mapColumnNames=currrency:currrency, quantity:quantity, pv:pv, valuta:valuta, expiry:expiry,
        contract:contract, instrument:instrument
    

    Diese Zuordnung muss nun nicht mehr erstellt werden, da NCDiff dies nun intern selbst versucht, falls kein mapColumnNames oder mapColumnIDs verwendet wird. Ist keine automatische Zuordnung möglich (da Spalten in den Dateien unterschiedliche Namen haben oder die Anzahl unterschiedlich ist) werden wie auch bisher die Spalten anhand der Reihenfolge in den Dateien verglichen.

  • Labels für Old und New

    Für die „New“ und „Old“ Bezeichner in den Ergebnisreports können nun alternative Bezeichner mit oldLabel und newLabel vergeben werden. Dies macht die Ergebnisse für Benutzer besser lesbar und verständlicher, da sofort klar ist woher die Dateien stammen. Bei den generischen Bezeichnungen Old/New ist nicht immer klar welche Dateien woher kommen – vor allem wenn NCDiff nicht für einen Regressionstest verwendet wird.

  • Neuer Kommandozeilenparameter –configurations

    Der neue Kommandozeilenparameter --configurations löst den Parameter --cfgFile ab und erlaubt die Spezifikation einer Liste von Konfigurationsdateien. Damit können Konfigurationen von unterschiedlichen Personen oder Abteilungen gewartet werden und trotzdem können alle Konfigurationen in einem NCDiff-Tool durchlauf mit einer gemeinsamen Statistik/Ergebnis verwendet werden.

    Der Parameter --cfgFile wird aktuell weiterhin unterstützt, aber in ein einer der nächsten Versionen deaktiviert.

  • NCDiff nicht nur vom Installationsordner aus startbar

    Bisher konnte NCDiff nur vom Installationsordner aus gestartet werden. Unter Unix (MacOS X, Linux, Solaris) kann das nun von jedem beliebigen Ordner aus erfolgen. Für Windows muss nur die Startzeile in der ncdiff.cmd Datei angepasst werden um auch hier das Tool von jedem beliebigen Ordner aus zu starten.

  • Default Toleranzen geändert

    Bisher war der Default-Wert für die absolute und relative Toleranz auf 0,1 definiert. In der Praxis hat sich gezeigt, das Anwender davon ausgehen jede Differenz zu erhalten wenn sie keine Toleranzen definiert haben. Daher wurde der Default-Wert der Toleranzen auf 0,0 festgelegt.

  • Aktualisierung des HTML Reports

    Die Bibliotheken für den HTML Report wurden auf den neuesten Stand gebracht und das Design wurde in Details verbessert.

Version 2.2

Versions Highlights

Für die neue Version 2.3 wurden viele Detailverbesserungen durchgeführt um das Tool im alltäglichen Einsatz noch besser benutzbar zu machen.

Die Ergebnisübersicht wurde neu gestaltet um die wichtigsten Eigenschaften des Vergleichs sofort sichtbar zu machen. Die neue Spalte „Matched“ liefert nun auch in Prozent wie viele der Input-Spalten übereinstimmen. In der HTML Ansicht liefert ein Popover auch zusätzlich die absolute Anzahl der Input und übereinstimmenden Zeilen.

Wesentliche Änderungen im Detail

  • Zeilenfilter Erweiterung

    Die Zeilenfilter wurden Erweitert um auch inverse Bedingungen definieren zu können. Zum Beispiel können nun einfach Zeilen mit einem bestimmten Zellenwert gefiltert werden:

    cell_starts_not(1; ´)
    

    Damit werden alle Zeilen ignoriert welche mit einem Apostroph in der ersten Spalte beginnen.

  • HTML Designänderungen

    Kopf- und Fußzeile des HTML Ergebnisses wurde verkleinert um mehr Platz für die Ergebnistabellen zu schaffen. Die Fußzeile ist nun auch fest am unteren Fensterrand verankert.

    Die Sortierung der Zeilen nach der Zeilennummer wird nun numerisch und nicht mehr alphabetisch durchgeführt.

    Ist copyInputFile=False gesetzt wird nun im HTML ein Link zu den Originaldateien angelegt, ansonsten zu den kopierten Input-Dateien.

  • Toleranzen abhängig von Bedingungen

    Die absoluten oder relativen Toleranzen können nun auch abhängig von Bedingungen definiert werden. Dazu können die selben Funktionen wie beim Zeilenfilter verwendet werden. Beispiel:

    absoluteColumnsTolerances=3:2.0:cell_contains(2;STOCK)|100.0:cell_contains(2;SWAP)|200.0:cell_contains(2;BOND)
    

    Damit wird die absolute Toleranz für die dritte Spalte definiert zu:

    • 2.0: wenn die Zelle in Spalte 2 dieser Zeile den Text „STOCK“ enthält

    • 100.0: wenn die Zelle in Spalte 2 dieser Zeile den Text „SWAP“ enthält

    • 200.0: wenn die Zelle in Spalte 2 dieser Zeile den Text „BOND“ enthält

  • HTML Ressourcen

    Die HTML Ressourcen liegen nun in Unterverzeichnissen des resources/html Verzeichnisses:

    • img für Bilder

    • css für Style Sheets

    • js für JavaScript Dateien

  • Erweiterung unterschiedliche SpaltenAnzahl

    Es können nun Dateien mit unterschiedlicher Spaltenanzahl gedifft werden. Die Spaltenanzahl in alt und neu beim selben Key müssen dennoch gleich sein.

    Dazu wird der Konfigurationseintrag

    oldFormat=CSVVAR
    newFormat=CSVVAR gesetzt.
    

    verwendet.

  • Erweiterung unterschiedliche Spaltenseperatoren

    Es können nun Dateien mit mehreren Seperatoren verglichen werden. Die Seperatoren werden gegen den jeweilig konfigurierten Seperator ersetzt. Die „Mehrfachseperatoren“ werden unter dem Punkt

    replaceDelimiters=\t,;,123
    

    konfiguriert. Es können einzelne Zeichen, Sonderzeichen und der ASCII Code des jeweiligen Zeichens verwendet werden.

Version 2.1

Versions Highlights

Für die neue Version 2.0 wurde der Code von der Version 1.4 erheblich überarbeitet und neu strukturiert. Ziel war es das Tool auf eine besser modularisierte und damit einfacher erweiterbare Basis zu stellen. Für Kundenanpassungen wurde ein Erweiterungskonzept eingeführt um in Zukunft Änderungen in Kundenerweiterungen bei neuen NCDiff Versionen möglichst gering zu halten.

Alle Konfigurationsparameter wurden nochmal durchgesehen und nun an eine einheitliches Namensschema angepasst. Auch die Syntax der Parameterwerte wurde nochmals vereinfacht und vereinheitlicht. Bestehende Konfigurationen müssen deshalb angepasst werden.

Bei der Umstrukturierung der Codes wurde auch Augenmerk auf die Verbesserung der Performance des NCDiff Tools gelegt. Viele Verbesserungen wurden integriert um das Laufzeitverhalten bei den verschiedensten Konfigurationen und Input-Daten zu verbessern.

Ergebnisreports können nun auch in HTML erzeugt werden. Dafür werden HTML 5 Frameworks verwendet und die Ausgabe kann flexibel an Kundenwünsche angepasst werden.

Wesentliche Änderungen im Detail

  • Code Modularisierung

    Der gesamt Python Code wurde überarbeitet um das NCDiff Tool besser zu modularisieren. Dabei wurden die Module umbenannt und in ein Python Package ncdiff verschoben.

  • Performance Verbesserungen

    Am Code wurden viele Optimierungen vorgenommen um die Geschwindigkeit zu verbessern. Die vielen Verbesserungen wurden mit verschiedenen Testszenarien gemessen und bringen im Durchschnitt eine Verdoppelung der Performance.

  • Erweiterungskonzept

    Mit dieser Version wird ein Erweiterungskonzept eingeführt mit dem sich alle wesentlichen Verarbeitungsschritte des NCDiff Tools verändern lassen. Kunden können so an definierten Schnittstellen das Verhalten des Tools wesentlich verändern. Neue Versionen der Tools sollten nur geringe Anpassungen in den Erweiterungen benötigen.

  • Benutzerhandbuch überarbeitet

    Der Umfang des Benutzerhandbuchs wurde wesentlich erweitert alle Einstellmöglichkeiten werden nun behandelt und mit Beispielen anschaulich gemacht.

  • Validierung und Fehlerbehandlung verbessert

    Die Validierung der Konfiguration wurde verbessert um möglichst früh Fehler in der Konfiguration zu erkennen und mit einer verständlichen Fehlermeldung anzuzeigen.

  • Ergebnisreports überarbeitet

    Die Ergebnisreports wurden umgebaut, d.h. neue Spalten wurden eingefügt und das Design verbessert. Zum Beispiel wird der verwendete Datentyp für einen Vergleich mit ausgegeben.

    HTML Ausgabe wurde wesentlich verbessert und verwendet nun HTML 5 um die Ausgabe dynamisch zu gestalten.

    Für das XLS Ausgabeformat wurden die Templates überarbeitet und stehen in mehreren Farbkombinationen zur Verfügung.

    Sowohl die CSV, HTML als auch die Excel Ausgabe liefert jetzt die Originaldaten zusätzlich zu den Unterschieden. In HTML und Excel kann mittels Verlinkung zwischen Unterschieden und Originaldaten gewechselt werden.

  • Mehrere Ergebnisreportformate erzeugen

    In einem Vergleichslauf können mehrere Reportformate auf einmal erzeugt werden. Zum Beispiel können HTML und XLS in einem Schritt erzeugt werden um die Daten in HTML flexibler zu präsentieren und XLS zur Weiterverarbeitung zu verwenden.

  • Packaging Struktur überarbeitet

    Das NCDiff Packet wurde neu strukturiert. Neu templates und resource Verzeichnisse wurden eingefügt. Die Python Bibliotheken liegen nun alle im libs Verzeichnis. In einem examples Verzeichnis findet man nun Beispieldateien um das Tool ausprobieren zu können.

    Für Windows wird auch ein portabler Python Interpreter mitgeliefert, damit das NCDiff Tool unter Windows ohne weitere Installation ausgeführt werden kann.

  • Default Werte für Konfigurationsparameter

    Für die meisten Parameter sind nun hard-coded Defaultwerte hinterlegt und im Benutzerhandbuch dokumentiert.

  • Unterschiedliche CSV Trennzeichen in Input-Dateien

    Mit oldCSVDelimiter und newCSVDelimiter können unterschiedliche Trennzeichen für die beiden Inputdateien verwendet werden.

  • Dateihandling für Ergebnisse

    Temporär erzeugt Dateien während des diff-Laufes können nun mit dem Parameter keepTemporaryFiles automatisch gelöscht werden wenn der Wert auf TRUE gesetzt wird.

    Für komplizierte Verzeichnisstrukturen der Originaldateien bietet es sich an diese in das Ergebnisverzeichnis zu kopieren. Das kann man nun durch setzten des Parameters copyInputFiles auf TRUE erreichen.

  • Der Parameter targets unterstützt Platzhalter

    Mit den Platzhaltern ‚*’ und ‚?’ kann man beim Parameter targets auf der Kommandozeile targets einfacher und flexibler ausführen.

  • Platzhalter für Parameter mit Dateinamen

    Für Parameter die Dateinamen definieren können nun verschiedene Platzhalter verwendet werden. Zum Beispiel können Datumswerte in verschiedenen Formaten verwendet werden. Aber auch ‚*’ und ‚?’ können verwendet werden. Liefert die Auflösung der Platzhalter eine Menge von Dateien, so wird immer die neueste verwendet.

  • Spaltennummern können auch Excel-Bezeichner sein

    Anstelle von Spaltennummern in den Konfigurationsparametern können nun auch Excel-Bezeichner für Spalten (A, B, … AA, AB,..) verwendet werden.

  • Threshold für Ausgabe konfigurierbar

    Mittels `maxReportLines kann nun die maximale Anzahl von Fehlern in Ergebnisreport definiert werden.

    Zusätzlich kann man mit stopOnMaxReportLines festlegen ob der Diff-Prozess beim erreichen des Limits abgebrochen werden soll, oder ob weiter gemacht werden soll aber nur die maximale Anzahl von Fehlern ausgewiesen werden soll.

  • Rowfilter überarbeitet

    Die Syntax und die RowFilter Typen wurden erweitert. Nun ist es möglich Zeilen mit bestimmten Inhalt, oder auch Zeilen mit bestimmter Zeilennummer zu ignorieren.

  • Vergleich von Excel Dateien

    Für Excel Dateien kann nun mit dem Parameter oldXLSSheetName bzw. ``newXLSSheetName` bestimmen welche Sheets verglichen werden sollen. Wird keines angegeben wird immer nur das erste Sheet in der Datei verglichen.

  • Zahlenformat

    Für die Eingabedateien kann unabhängig das Zahlenformat auf Datei- und Spaltenebene eingestellt werden. Zusätzlich zu DE, EN und US Zahlenformat wird das CH Zahlenformat unterstützt.