Changelog ======================================================================================================================== .. contents:: NCDiff Releases :depth: 1 :local: 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. .. attention:: 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. .. attention:: 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 .. code-block:: cfg 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: .. code-block:: cfg 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: .. code-block:: cfg bothColumnFormats = 5:str, 10:str;i * 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.: .. code-block:: sh 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: .. code-block:: sh ncdiff --configurations sst*.cfg oder auch: .. code-block:: sh 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. .. code-block:: cfg 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: .. code-block:: cfg [DEFAULT] bothFormat = CSV * 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. .. code-block:: cfg [TARGET] bothFormat = SQL bothSQLDriver = pyodbc bothSQLFetchSize = 500 oldSQLConnection = DRIVER={SQL Server};SERVER=HOSTNAME;DATABASE=DBOLD;UID=BENUTZERNAME;PWD=PASSWORT newSQLConnection = DRIVER={SQL Server};SERVER=HOSTNAME;DATABASE=DBNEW;UID=BENUTZERNAME;PWD=PASSWORT oldSQLQuery = TABELLENNAME newSQLQuery = select * from TABELLENNAME * 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: .. code-block:: cfg [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 .. code-block:: cfg [TARGET] oldRowFilters = row_range(1; 10), cell_contains_not(D; CHF) oldIgnoreColumns = 1, 3:cell_starts(5; Deutsche) absoluteColumnsTolerances = 3:5, 7:30.0:cell_contains(2;STOCK)|50.0 NCDiff V2.5 .. code-block:: cfg [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: .. code-block:: cfg Feld1;"Gequotetes Feld2""hier geht es weiter;Feld3 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: .. code-block:: cfg Feld1 Gequotetes Feld2"hier geht es weiter Feld3 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. .. code-block:: cfg [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. .. code-block:: cfg [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. .. code-block:: cfg [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. .. code-block:: cfg [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. .. code-block:: cfg [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. .. code-block:: cfg [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. .. code-block:: sh ncdiff 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. .. code-block:: cfg [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: .. code-block:: cfg [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: .. code-block:: cfg 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: .. code-block:: cfg 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: .. code-block:: cfg 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 .. code-block:: cfg 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 .. code-block:: cfg 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.