Changelog¶
NCDiff Releases
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 keinresultFilterDirectory
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 dasstatistics.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
istWenn ein Target mehr als
maxResultLines
Unterschiede findet, werden in den Ergebnissdateien nurmaxResultLines
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
oderrelativeTolerance
Die Unterschiede wurden bei der Verwendung von Toleranzen nicht richtig ausgeschlossen.
Result Filter:
oldValue/newValue
Spalten zur XLS Datei wieder hinzugefügtDiese 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
odernewValue
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
undnewLabel
.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 istpyodbc
. 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 mitoldSQLQuery/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
undnewCSVReplaceDelimiters
.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 EinstellungoldCSVDoubleQuote=False
undnewCSVDoublequote=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 gegenoldFilePath
und dietestDatei
immer gegennewFilePath
, 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
odermapColumnIDs
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
undnewLabel
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 einemexamples
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
undnewCSVDelimiter
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 aufTRUE
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
aufTRUE
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.