Konfiguration¶
In der Konfiguration werden alle Einstellungen vorgenommen um Vergleichsreports für unterschiedliche Dateien zu
erstellen. Zentral ist hier der Begriff Target, der alle Einstellungen für einen bestimmten Dateivergleich
zusammenfasst. Im folgenden Beispiel ist ein Target TestReport1
im letzten Abschnitt konfiguriert. Der Name des
Target steht dabei in eckigen Klammern.
[DEFAULT]
numberFormat=EN
newFormat=CSV
[GLOBAL]
resultFormats=CSV
oldDirectory=test/data/old/
newDirectory=test/data/new/
resultDirectory=test/data/result/
[TestReport1]
oldFilePath=Report1_v1.0.xls
newFilePath=Report1_v2.0.csv
oldFormat=XLS
newFormat=CSV
oldKeyColumns=1
newKeyColumns=1
Der Abschnitt nach dem Target Namen definiert die Parameter für diesen bestimmten Vergleich. In diesem Fall werden
zwei Dateien Report1_v1.0.xls
und Report1_v2.0.csv
verglichen, welche unterschiedliche Dateiformate besitzen.
Um nicht immer alle Einstellungen in jedem Target neu definieren zu müssen, können Standardwerte im Abschnitt
DEFAULT
gesetzt werden. Im obigen Beispiel könnte man den newFormat
Parameter im Abschnitt TestReport1
weg
lassen, da dieser schon im DEFAULT
Abschnitt definiert wurde.
Einige wenige Parameter gelten global und können nicht in einem bestimmten Target überschrieben werden. Diese
Parameter werden im Abschnitt GLOBAL
definiert.
Um NCDiff mit einer Konfigurationsdatei ausführen, muss diese mit dem Parameter --configurations
auf der Kommandozeile
spezifiziert werden. Um zum Beispiel alle Targets der Konfigurationsdatei regression-test.cfg
auszuführen:
ncdiff --configurations regression-test.cfg
Parameter¶
Für alle Parameter gelten folgende Regeln:
Für den Vergleich wurde der Use-Case Regression Test herangezogen. Deshalb gibt es immer (wo es Sinn macht) einen Parameter für eine alte und eine neue Datei. Zum Beispiel:
oldColumnNames
undnewColumnNames
Listen werden immer mit Beistrich/Komma getrennt.
Bei Listen von Listen wird die Sub-Liste mit Strichpunkt/Semikolon getrennt.
Mappings werden durch Doppelpunkt getrennt.
Bei numerischen Werten wird immer der Punkt als Dezimaltrennzeichen verwendet.
Zeilen- und Spaltennummern beginnen immer bei 1.
Spaltennummern können auch negativ sein. Die Nummer -1 entspricht dann der letzten Splaten, die -2 der vorletzten und so weiter.
Als Spaltennummern können alternativ die Excel Spaltennamen verwendet werden oder auch Spaltennamen der Datei falls diese eine Headerzeile besitzt (
old/newHasHeader=True
), oder Spaltennamen explizit mittelsold/newColumnNames
gesetzt wurden.An einigen Stellen ist es möglich Filterregeln oder Einschränkungen zu definieren. Details hierzu sind in Filterregeln und Einschränkungen dokumentiert.
absoluteColumnsTolerances¶
- Type
Target
- Wert
Map von Filterregeln und/oder Spaltennummern und Toleranz Paaren
- Default
- Inhalt
Definiert die absolute Toleranz für eine bestimmte Spalte. Dieser Wert überschreibt den Wert des globalen Parameters
absoluteTolerance
für die definierte Spalte.- Beispiel
absoluteColumnsTolerances=5: 0.5, 6: 0.6, 7: if(contains(@2, 'STOCK'); 30.0; if(contains(@2, 'OPTION'); 50.0))Bedeutet, dass bei Spalte 5 die Werte um 0.5, bei Spalte 6 um 0.6 absolut abweichen dürfen. Die Werte in Spalte 7 dürfen um 30 absolut abweichen, wenn Spalte 2 den Wert „STOCK“ enthält und um 50 absolut, wenn Spalte 2 den Wert „OPTION“ enthält.
absoluteTolerance¶
- Type
Target
- Wert
Float Wert
- Default
0.0
- Inhalt
Abweichung, die ein Wert in der Neuen Datei im Vergleich zur Alten abweichen darf. Jede Differenz die größer ist als dieser Wert wird im Ergebnisreport ausgewiesen.
- Beispiel
absoluteTolerance=0.1
oldColumnFormats, newColumFormats, bothColumnFormats¶
- Type
Target
- Wert
Liste von Spaltennummern-Mappings auf Datentyp und Format
- Default
- Inhalt
Zur Angabe eines Datentyps ggf. mit Format für die jeweilige alte Spalte. Damit können z.B. unterschiedliche Datumsformate zwischen den beiden Inputdateien verglichen werden.
- Beispiel
oldColumnFormats=1:date;%Y-%m-%d, 2:float, 4:int, 6:str, 5:float;EN newColumnFormats=A:int,B:float,C:date;Y%m%d% bothColumnFormats=Currency:float, Instrument:int, 3:str
oldColumnNames, newColumnNames, bothColumnNames¶
- Type
Target
- Wert
Liste von Namen
- Default
- Inhalt
Spaltennamen welche in der Diff-Ergebnisdatei für die alte/neue Datei angezeigt werden sollen. Falls diese nicht gesetzt werden, wird der Inhalt der ersten Zeile als Spaltennamen verwendet.
- Beispiel
oldColumnNames=BLZ,ID,CCY,Reportdatei newColumnNames=Currency,Instrument bothColumnNames=BLZ,Currency,Instrument
oldColumnWidths, newColumnWidths, bothColumnWidths¶
- Type
Target
- Wert
Liste von Spaltenbreiten
- Default
- Inhalt
Spaltenbreite von der alten/neuen Datei im Falle von Dateien mit fixen Spaltenbreiten (oldFormat: FixedWidth)
- Beispiel
oldColumnWidths=1,6,5,16,1,1,11 newColumnWidhts=10,2,5,5,10 bothColumnWidths=3,3,10,20,4,3
comparator¶
- Type
Target
- Wert
Name der verwendeten Zell Vergleichs-Implementierung.
- Default
- Inhalt
Bei der Verwendung von Factories können so unterschiedliche Implementierungen ausgewählt werden.
- Beispiel
comparator=CustomDiffer
configurations¶
- Type
Kommandozeile
- Wert
Dateipfade
- Default
ncdiff.cfg
- Inhalt
Name der Konfigurationsdateien mit den Diff-Einstellungen als Beistrich separierte Liste. Zusätzlich können auch die Platzhalter „*“ für eine beliebige Zeichenkette und „?“ für ein bestimmtes Zeichen verwendet werden.
- Beispiel
ncdiff –-configurations H:/diff/diff.cfg, H:/diff/diff2.cfgFührt alle Targets in den beiden Konfigurationsdateien aus. Alternativ kann man es auch mit Platzhalter schreiben:
ncdiff –-configurations H:/diff/diff*.cfg
copyInputFiles¶
- Type
Target
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Parameter um zu spezifizieren ob die Input Dateien in das Ergebnisverzeichnis kopiert werden sollen.
- Beispiel
copyInputFiles=TRUE
oldCSVDelimiter, newCSVDelimiter, bothCSVDelimiter¶
- Type
Target
- Wert
Trennzeichen
- Default
;
- Inhalt
Zeichen zur Abgrenzung von einzelnen Spalten in der alten/neuen Datei. Wird nur beim CSV berücksichtigt. Sonderzeichen können wie in Python üblich mit escaped werden. Beispielsweise wird als Tabulator Zeichen interpretiert. Andere Zeichen sind aber auch möglich, so ergibt x1f ein geschütztes Leerzeichen.
- Beispiel
oldCSVDelimiter=; newCSVDelimiter=/t bothCSVDelimiter=,
oldCSVQuotechar, newCSVQuotechar, bothCSVQuotechar¶
- Type
Target
- Wert
Zeichen
- Default
„
- Inhalt
Das zur Quotierung in der alten/neuen Eingabedatei verwendete Zeichen.
- Beispiel
oldCSVQuotechar=' newCSVQuotechar=' bothCSVQuotechar='
oldCSVQuoting, newCSVQuoting, bothCSVQuoting¶
- Type
Target
- Wert
QUOTE_NONE: Keine Quotierung von Zeichenketten. QUOTE_MINIMAL: Quotierung nur dann, wenn das Feldtrennzeichen in der Zeichenkette erwartet wird. Funktioniert ebenfalls, wenn das Feldtrennzeichen nicht in der Zeichenkette enthalten ist.
- Default
QUOTE_MINIMAL
- Inhalt
Die Quotierungseinstellung für die alten/neue Eingabedatei.
- Beispiel
oldCSVQuoting=QUOTE_NONE newCSVQuoting=QUOTE_MINIMAL bothCSVQuoting=QUOTE_NONE
oldCSVDoublequote, newCSVDoublequote, bothCSVDoublequote¶
- Type
Target
- Wert
TRUE, FALSE
- Default
TRUE
- Inhalt
Wenn die doppelt Quotierung eingeschaltet ist, dann werden zwei aufeinanderfolgende Quotierungszeichen als ein Quotierungszeichen im Ergebnistext geliefert.
- Beispiel
oldCSVDoublequote=FALSE newCSVDoublequote=TRUE bothCSVDoublequote=TRUE
oldCSVEscapechar, newCSVEscapechar, bothEscapechar¶
- Type
Target
- Wert
Zeichen
- Default
- Inhalt
Wenn <old|new|both>CSVQuoting auf QUOTE_NONE steht, dann wird erwartet, dass Feldtrennzeichen die ein Teil des Textes sind mit einem vorangestellten Escape-Zeichen gekennzeichnet werden.
- Beispiel
oldCSVEscapechar=\ newCSVEscapechar=\ bothCSVEscapechar=\
oldCSVReplaceDelimiters, oldCSVReplaceDelimiters, bothCSVReplaceDelimiters¶
- Type
Target
- Wert
Komma getrennte Liste von delimiters die im File als Spaltentrennzeichen verwendet werden.
- Default
- Inhalt
Bei der Verwendung von verschiedenen Trennzeichen werden diese durch den im Parameter oldCSVDelimiter bzw. newCSVDelimiter ersetzt. Anstatt eines Zeichens kann auch der ASCII Code des Zeichens verwendet werden (dezimal).
- Beispiel
oldCSVReplaceDelimiters= ,:,123 newCSVReplaceDelimiters= ,:,123 bothCSVReplaceDelimiters= ,:,123
differ¶
- Type
Target
- Wert
Name der verwendeten Zeilen Differenzbildungsimplementierung.
- Default
- Inhalt
Bei der Verwendung von Factories können so unterschiedliche Implementierungen ausgewählt werden.
- Beispiel
differ=CustomDiffer
oldDirectory, newDirectory, bothDirectory¶
- Type
Global
- Wert
Ordnerpfad
- Default
Keiner – muss spezifiziert werden
- Inhalt
Absoluter oder relativer Pfad inklusive Ordnername des Ordners mit den alten/neuen zu vergleichenden Dateien.
- Beispiel
oldDirectory=/drive_a/test/data/old/ newDirectory=drive_a/test/data/new/
oldEncoding, newEncoding, bothEncoding¶
- Type
Target
- Wert
Die Zeichensatz Kodierung der Eingabedatei auf der „Old“ Seite.
- Default
- Inhalt
Die Zeichensatz Kodierung legt fest wie die Zeichen in der Eingabedatei interpretiert werden. Möglich sind alle von Python unterstützte Zeichensatz Kodierungen: Python Standard Encodings
- Beispiel
oldEncoding=cp1252 newEncoding=utf-8 bothEncoding=cp1252
extensionModules¶
- Type
Target
- Wert
Liste von Modulnamen
- Default
- Inhalt
Um Funktionalität zu verändern können Kunden Module konfigurieren, die Python Code enthalten um Teile der Diff-Funktionalität auszutauschen. Diese Python Module werden im NCDiff-X.Y/libs/extensions Ordner erwartet.
- Beispiel
extensionModules=MyBankCustomisationsErwartet dass das Python Modul MyBankCustomisations.py im Ordner NCDiff-X.Y/libs/extensions existiert und importiert werden kann.
oldFilePath, newFilePath, bothFilePath¶
- Type
Target
- Wert
Relativer Dateipfad
- Default
Keiner – muss spezifiziert werden
- Inhalt
Dateipfad der alten Input-Datei relativ zum oldDirectory.
- Beispiel
oldFileName=SST1/ReportA.csv newFileName=PnlReport.xml
oldFormat, newFormat, bothFormat¶
- Type
Target
- Wert
Dateitypbezeichnung
- Default
Keiner – muss spezifiziert werden
- Inhalt
Kürzel für das Datenformat der alten/neuen Eingabedatei. Standardmäßig werden XLS, XML, TAR; CSV, CSVVAR, FixedWidth (Textformat mit fixer Breite) und SQL unterstützt.
- Beispiel
oldFormat=FixedWidth newFormat=CSV bothFormat=XML
oldHasHeader, newHasHeader, bothHasHeader¶
- Type
Target
- Wert
TRUE, FALSE
- Default
TRUE
- Inhalt
Die Spaltenbenennung wird durch die erste Zeile der jeweiligen Datei bestimmt – diese wird nicht verglichen. Wird hier FALSE spezifiziert, wird der Spaltenname selbst generiert (Column 1, Column 2, …). Die Datei wird dann aber ab der ersten Zeile verglichen.
- Beispiel
oldHasHeader=TRUE newHasHeader=False bothHasHeader=FALSE
help¶
- Type
Kommandozeile
- Wert
- Default
- Inhalt
Gibt den Hilfetext über die verfügbaren Kommandozeilen Parameter aus.
- Beispiel
ncdiff –help
HTMLResourcesDirectory¶
- Type
Global
- Wert
Ordnerpfad
- Default
resources/html
- Inhalt
Absoluter oder relativer Pfad inklusive Ordnername des Ordners in dem zusätzliche Ressourcen für die Report abgelegt sind. Für HTML Reports können dort:
Bilder im Unterverzeichnis img
Stylesheets im Unterverzeichnis css
JavaScript Dateien im Unterverzeichnis js
WebFonts im Unterverzeichnis font
abgelegt sein. Die Standard Implementierung des HTML Reports kopiert alle Dateien und Verzeichnisse aus dem Verzeichnis in das Ergebnisverzeichnis.
- Beispiel
HTMLRessourceDirectory=C:/resources/html
oldIgnoreColumns, newIgnoreColumns, bothIgnoreColumns¶
- Type
Target
- Wert
Liste von Spaltennummern, eventuell mit Filterregel
- Default
- Inhalt
Spaltennummern aus der alten/neuen Datei, die nicht verglichen werden sollen. Schlüsselspalten werden nie verglichen. Es ist auch möglich eine Überprüfung zu anderen Spalten einzubauen. Der Ausdruck
7: contains(@14, 'xyz')
bedeutet beispielsweise, dass die Spalte 7 ignoriert werden soll, wenn in der Spalte 14 der Text xyz steht. Als Überprüfungsregeln kommen alle Zellen basierten Filter in Frage.- Beispiel
oldIgnoreColumns=5, 15, 7: contains(@14; 'xyz') newIgnoreColumns=A, F bothIgnoreColumns=5, A, Instrument: contains(@'Curr'; 'EUR')
keepTempFiles¶
- Type
Target
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Parameter um die während des Vergleiches erzeugten temporären Dateien zu behalten oder zu löschen.
- Beispiel
keepTempFiles=TRUE
oldKeyColumns, newKeyColumns, bothKeyColumns¶
- Type
Target
- Wert
Liste von Spaltennummern
- Default
Keiner – muss spezifiziert werden
- Inhalt
Für Spalte(n) aus der alten/neuen Datei, aus denen der eindeutige Schlüssel für eine Zeile gebildet werden soll. Dieser wird verwendet um Zeilen aus den beiden Inputdateien mit denselben Schlüsseln zu vergleichen.
- Beispiel
oldKeyColumns=1,2,4 newKeyColumns=A,B,D bothKeyColumns=Name,Instrument,CurrencyDie Spalten 1,2 und 4 ergeben einen eindeutigen Schlüssel für eine Zeile in der „old“ Datei.
oldLabel, newLabel¶
- Type
Global
- Wert
Name für die alte/neue Seite.
- Default
- Inhalt
Dieser Label wird in den Ergebnisdateien zur Beschriftung der Tabellen und Sheets verwendet. Damit kann man die Ergebnisse besser lesbar gestalten, da man statt der generischen Bezeichnung „Old“ z.B. den Namen des Systems welche die ‚old’-Dateien generiert setzten kann. Zum Beispiel „Prod“ oder „SystemA“
- Beispiel
oldLabel=Produktion newLabel=Test
licenses¶
- Type
Kommandozeile
- Wert
- Default
- Inhalt
Gibt die Lizenzbedingungen von NCDiff und den Lizenzen der Bibliotheken von Drittherstellern aus.
- Beispiel
ncdiff –licenses
mapColumnNames¶
- Type
Target
- Wert
Liste von alten und neuen Spaltennamen-Mappings
- Default
- Inhalt
Mittels der Spaltennamen wird definiert welche Spalte mit welcher verglichen werden soll. Schlüsselspalten dürfen nicht angegeben werden.
- Beispiel
mapColumnNames=SpalteA:SpalteB, SpalteB:SpalteCHier wird angegeben, dass SpalteA von der Alt Datei mit SpalteB aus der Neu Datei verglichen werden soll und SpalteB aus der Alt Datei mit SpalteC aus der Neu Datei verglichen werden soll.
mapColumnIDs¶
- Type: Target
- Wert
Liste von alten und neuen Spaltennummern-Mappings
- Default
- Inhalt
Mittels der Spaltennummern wird definiert welche Spalte mit welcher verglichen werden soll. Schlüsselspalten dürfen nicht angegeben werden.
- Beispiel
mapColumnIDs=1:2, 2:1, C:D
Hier wird angegeben, dass die erste Spalte aus der Alt Datei mit der zweiten Spalte aus der Neu Datei verglichen werden soll und dass die zweite Spalte der Alt Datei mit der ersten Spalte aus der Neu Datei verglichen werden soll.
maxResultLines¶
- Type
Target
- Wert
Number
- Default
1000
- Inhalt
Anzahl der maximal in einem Ergebnisreport aufscheinenden Zeilen. Dieser Parameter ist sinnvoll während der Testphase beim Erstellen einer Konfiguration sinnvoll, da man damit die Report länge kurz halten kann falls Fehlkonfigurationen zu vielen Einträgen führen. Aber auch im Betrieb ist es sinnvoll eine Obergrenze zu setzten, da riesige Dateien nur schwer zu warten sind und bei vielen Fehlern von einem Fehler in der Konfiguration oder der Erzeugung der Eingangsdaten auszugehen ist. Wir eine negativer Wert gesetzt so wird das als unendlich interpretiert und die Reports können entsprechend groß werden.
- Beispiel
maxResultLines=1000
oldNumberFormat, newNumberFormat, bothNumberFormat¶
- Type
Target
- Wert
Länderkürzel für das Format
- Default
DE
- Inhalt
Nummernformat in der alten/neuen Input-Datei
EN … Englisches Nummernformat (z.B.: 5,000.0 oder 5000.0)
DE … Deutsches Nummernformat (z.B.: 5.000,0 oder 5000,0)
US … Spezielles US Nummernformat für negative Zahlen (z.B.: (100.1))
CH … Schweizer Nummernformat (z.B.: 5 000.0 oder 5‘000,0)
- Beispiel
oldNumberFormat=EN newNumberFormat=US bothNumberFormat=DE
profile¶
- Type
Kommandozeile
- Wert
- Default
- Inhalt
Startet den NCDiff Lauf mit der Python Laufzeitanalyse. Die zusätzliche Ausgabe der Laufzeitanalyse am Ende des Laufs kann von Python Entwicklern zur Performance Optimierung des Python Quellcodes verwendet werden.
- Beispiel
ncdiff -–profile --cfgFile H:/diff/mydiff-cfg
relativeColumnsTolerances¶
- Type
Target
- Wert
Map von Filterregeln und/oder Spaltennummer und Toleranz (in %) Paaren
- Default
- Inhalt
Definiert die relative Toleranz für eine bestimmte Spalte. Dieser Wert überschreibt den Wert des Parameters relativeTolerance für die definierte Spalte. Wird eine Filterregel angegeben, gilt der Toleranzwert nur, wenn die Regel zutrifft.
- Beispiel
relativeColumnsTolerances=3: 0.1, 4: 10.0, 5: if(contains(@2; 'STOCK'); 2.0; if(contains(@2; 'SWAP'); 20.0))Bedeutet, dass bei Spalte 3 die Werte um 0.1%, bei Spalte 4 um 10% abweichen dürfen. Die Werte in Spalte 5 dürfen um 2% abweichen, wenn Spalte 2 den Wert „STOCK“ enthält und um 20%, wenn Spalte 2 den Wert „SWAP“ enthält. Die Basis dabei ist der Wert der alten Spalte.
relativeTolerance¶
- Type
Target
- Wert
Float Wert in %
- Default
0.0
- Inhalt
Abweichung, die ein Wert in der Neuen Datei im Vergleich zur Alten prozentual abweichen darf.
- Beispiel
relativeTolerance=10.0Eine relative Abweichung der Werte vom mehr als 10% liefert einen Eintrag im Ergebnisreport.
resultDirectory¶
- Type
Global
- Wert
Ordnerpfad
- Default
Keiner – muss spezifiziert werden
- Inhalt
Absoluter oder relativer Pfad inklusive Ordnername des Ordners wo die Diff-Ergebnisdateien mit den vergleichenden Dateien abgelegt werden sollen.
- Beispiel
resultDirectory=diff/result/
resultFilterDirectory¶
- Type
Global
- Wert
Ordnerpfad
- Default
- Inhalt
Absoluter oder relativer Pfad inklusive Ordnername des Ordners wo sich die ResultFilter/Whitlist Datei befindet.
- Beispiel
resultFilterDirectory=filter
resultFilterEmptyMarker¶
- Type
Target
- Wert
Name
- Default
„<empty>“
- Inhalt
Wert der in der Result Filter xls Datei in der oldValue oder newValue Spalte stehen muss um einen leeren Zellenwert zu kennzeichnen.
- Beispiel
resultFilterEmptyMarker=<leer>
resultFilterFilePath¶
- Type
Target
- Wert
Relativer Dateipfad
- Default
- Inhalt
Dateipfad der ResultFilter Datei relativ zum resultFilterDirectory.
- Beispiel
resultFilterFilePath=ResultFilter.xls
resultFilterXLSSheetName¶
- Type
Target
- Wert
Name
- Default
„ResultFilter“
- Inhalt
Name des Sheets innerhalb einer Excel Datei von der die Informationen bezüglich des aktuellen ResultFilters gelesen werden sollen.
- Beispiel
resultFilterXLSSheetName=ResultFilterTarget01
resultFormats¶
- Type
Global
- Wert
Liste von CSV, XLSX, HTML, JUNIT, XRAY
- Default
CSV, HTML
- Inhalt
Der Diff-Ergebnisdateityp. Mögliche Typen sind CSV, XLSX, HTML, JUNIT und XRAY aber das kann vom Kunden erweitert werden.
Die Formate JUNIT und XRAY liefern keine Detailergebnisse, sondern nur eine Übersicht zur weiteren Verarbeitung in einem Continuous Integration/Delivery System wie Jenkins oder Jira. Dienen also nur zur maschinellen Weiterverarbeitung und sind nicht als Report gedacht.
- Beispiel
resultFormats=CSV,HTMLGeneriert Ergebnisreports in den Formaten CSV und HTML.
resultNumberFormat¶
- Type
Global
- Wert
Länderkürzel für das Format
- Default
DE
- Inhalt
Nummernformat in der Ergebnis-Datei
EN … Englisches Nummernformat (z.B.: 5,000.0 oder 5000.0)
DE … Deutsches Nummernformat (z.B.: 5.000,0 oder 5000,0)
US … Spezielles US Nummernformat für negative Zahlen (z.B.: (100.1))
CH … Schweizer Nummernformat (z.B.: 5 000.0 oder 5‘000,0)
- Beispiel
resultNumberFormat=EN
oldRowFilters, newRowFilters, bothRowFilters¶
- Type
Target
- Wert
Filterregeln
- Default
- Inhalt
Zeilen der alten/neuen Datei, welche den angegebenen Filterkriterien entsprechen, werden für den Vergleich ignoriert.
- Beispiel
oldRowFilter=and(equals(@1; 'ABC'); startswith(@2; 'C'))Hier werden alle Zeilen entfernt die in Spalte 1 der Zeichenkette ABC entsprechen uns in Spalte 2 die mit einem C beginnen. Auch Zahlen werden hier als Zeichenketten interpretiert und Groß-Kleinschreibung muss berücksichtigt werden.
newRowFilter=endswith(@'Instrument'; 'EUR') bothRowFilter=contains(@A; 'EURIBOR')
showFilteredResults¶
- Type
Target
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Parameter um alle normalerweise durch ResultFilter ausgefilterte Differenzen trotzdem anzuzeigen.
- Beispiel
showFilteredResults=TRUE
showFilteredTolerances¶
- Type
Target
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Parameter um alle normalerweise durch Toleranzen ausgefilterte Differenzen trotzdem anzuzeigen.
- Beispiel
showFilteredTolerances=TRUE
showResult¶
- Type
Global
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Anzeigen des Ergebnisses im Browser oder Excel je nach eingestelltem Ergebnisformat. Sind mehrere Ergebnisformate definiert wird das erste gefundenen Ergebnisformat angezeigt, wobei in folgender Reihenfolge gesucht wird:
HMTL
Microsoft Excel
CSV
- Beispiel
showResult = TRUE
oldSQLConnection, newSQLConnection, bothSQLConnection¶
- Type
Target
- Wert
Datenbank Verbindungsstring
- Default
- Inhalt
Ein Datenbank Treiber spezifischer Verbindungsstring. Einen guten Überblick gibt die Homepage von pyodbc Connection Strings. Für ODBC Datenbanken gibt es eine Vielzahl an Verbindungsstrings auf ConnectionStrings.com.
Das erste Beispiel zeigt einen möglichen ODBC Verbindungsstring für den Microsoft SQL Server.
Das zweite Beispiel eine Verbindung zu einem Microsoft SQL Server 2012, der zur Authentifizierung den aktuell angemeldeten Benutzer verwendet. Durch die Angabe von Trusted_Connection=yes ist kein Passwort erforderlich. Mit Encrypt=yes werden die Daten verschlüsselt über das Netzwerk übertragen. Es lässt sich derselbe Verbindungsstring mit bothSQLConnection verwenden, falls die Datenbank das Schema für die alten und neuen Tabellen enthält.
Das dritte Beispiel verwendet eine ODBC Datenquelle. Diese kann mit „ODBC Datenquellen verwalten“ angelegt werden. In einer ODBC Datenquelle lassen sich auch Passwörter hinterlegen, welche aber meist unverschlüsselt gespeichert werden. Daher sollte wenn immer möglich Windows Authentifizierung verwendet werden.
- Beispiel
oldSQLConnection = DRIVER={SQL Server};SERVER=HOSTNAME;DATABASE=DBOLD;UID=BENUTZERNAME;PWD=PASSWORT newSQLConnection = DRIVER={SQL Server};SERVER=HOSTNAME;DATABASE=DBNEW;UID=BENUTZERNAME;PWD=PASSWORTbothSQLConnection = DRIVER={SQL Server Native Client 11.0};SERVER=HOSTNAME;DATABASE=DB;Trusted_Connection=yes;Encrypt=yesoldSQLConnection = DSN=DBOLD newSQLConnection = DSN=DBNEW
oldSQLDriver, newSQLDriver, bothSQLDriver¶
- Type
Target
- Wert
pyodbc, sqlite3, …
- Default
pyodbc
- Inhalt
Dieser Parameter gibt den Namen des Python DBAPI2 Treibermoduls an. Diese Einstellung wird höchst selten geändert werden müssen, da mit pyodbc der Zugriff auf alle Datenbanken die einen ODBC Treiber bereitstellen möglich ist. Da pyodbc nicht Teil der Standard Python Installation ist, muss dieser Treiber installiert werden (Python ODBC Library).
- Beispiel
oldSQLDriver = sqlite3
oldSQLFetchSize, newSQLFetchSize, bothSQLFetchSize¶
- Type
Target
- Wert
Abfragegröße bei SQL Abfragen
- Default
500
- Inhalt
Hier wird festgelegt wie viele Zeilen bei einer Abfrage auf einmal geholt werden. Mit dem Standardwert werden beispielsweise immer Blöcke von 500 Zeilen abgefragt und diese dann weiterverarbeitet. Diese Einstellung dient zur Performance Optimierung.
- Beispiel
bothSQLFetchSize = 2000
oldSQLQuery, newSQLQuery, bothSQLQuery¶
- Type
Target
- Wert
Abfrage an eine SQL Datenbank.
- Default
- Inhalt
Name einer Tabelle oder View in einer SQL Datenbank, oder eine select Abfrage. Wenn die angegeben Abfrage nicht mit „select“ beginnt, dann wird angenommen dass alle Spalten einer Tabelle abgefragt werden sollen und automatisch eine select Abfrage in der Form select * from „TABELLENNAME“ durchgeführt.
- Beispiel
oldSQLQuery = TABELLENNAME newSQLQuery = select * from TABELLENNAME
statisticTimeStampFormat¶
- Type
Target
- Wert
Python Timestamp-Format
- Default
- Inhalt
Hier kann man ein Zeitstempelformat definieren das verwendet wird um an das statistics.html/csv/xlsx einen Zeitstempel anzuhängen.
- Beispiel
statisticTimeStampFormat=%Y-%m-%d
stopOnMaxResultLines¶
- Type
Target
- Wert
TRUE, FALSE
- Default
FALSE
- Inhalt
Parameter um zu spezifizieren ob bei Erreichen der maximal zu schreibenden Fehlerzeilen der Diff-Prozess noch weitergeführt werden soll. Falls abgebrochen werden soll, wird nur der aktuell laufende Prozess gestoppt, aber nicht die gesamte Ausführung des NCDiff Tools.
- Beispiel
stopOnMaxResultLines=TRUE
targets¶
- Type
Kommandozeile
- Wert
Namen der Targets mit Beistrich getrennt
- Default
Alle Targets der Konfigurationsdatei
- Inhalt
Lediglich angegebene Targets werden mit den Einstellungen aus der Konfigurationsdatei gestartet. Falls kein Wert spezifiziert wird, werden alle Targets in der Konfigurationsdatei ausgeführt.
- Beispiel
ncdiff –-cfgFile H:/diff/mydiff-cfg –-target Report1Führt das Target Report1 die in der spezifizierten Konfigurationsdatei definiert ist aus.
tempDirectories¶
- Type
Target
- Wert
Liste von Ordnername
- Default
System Temp-Verzeichnis
- Inhalt
Ordner in dem temporär Dateien, wie zum Beispiel die Datei mit den nach Schlüsseln sortierten Einträgen, erzeugt werden sollen. Die Ordner werden im Round-Robin verfahren benutz, wird keines angegeben so wird das System Temp-Verzeichnis verwendet.
- Beispiel
tempDirectories=/var/tmp, /usr/temp
templateDirectory¶
- Type
Global
- Wert
Ordnerpfad
- Default
templates
- Inhalt
Absoluter oder relativer Pfad zum Ablageort sämtlicher Templates. Aktuell verwendet nur der HTML und XLSX Report Templates.
- Beispiel
templateDirectory=templates
oldXLSSheetName, newXLSSheetName, bothXLSSheetName¶
- Type
Target
- Wert
Name
- Default
- Inhalt
Sheet Name für die alte/neue Datei bei einem XLS Dateivergleich. Falls bei einem XLS Vergleich kein Sheet Name spezifiziert wird, dann wird immer nur das erste Sheet der Datei zum Vergleich herangezogen.
- Beispiel
oldXlsSheetName=Sheet1 newXLSSheetNAme=Result bothXLSSheetName=PNLReport
XLSXTemplate¶
- Type
Global
- Wert
Dateiname
- Default
template_green-grey.xltx
- Inhalt
Name des Templates, welches für Excel 2007 basierte Dateien verwendet werden soll. Das Template definiert Spaltennamen und Formatierungen für die Ergebnisreports.
- Beispiel
XLSXTemplate=customer_template.xltx
Konfigurationswertermittlung¶
Nachfolgend ist die Konfigurationsparametervererbungsreihenfolge angeführt (höchste Priorität oben):
Ebene |
Kurzbeschreibung |
---|---|
Kommandozeile |
Parameter spezifiziert auf Kommandozeileneben sind die höchstwertigen Konfigurationsparameter |
[GOBAL] |
|
new/old |
Seitenspezifische |
both |
Beidseitige Konfiguration überschreibt |
[DEFAULT] |
Konfigurationsmöglichkeit mit der niedrigsten Priorität |
Für die Konfigurationsparameter Format, Directory, FilePath und Label existiert mit Absicht kein both
Verwendungsmöglichkeit.
[GLOBAL]
newNumberFormat=EN
oldNumberFormat=DE
[DEFAULT]
bothEncoding=cp1252
bothNumberFormat=US
[TARGET]
bothEncoding=UTF-8
newNumberFormat=US
oldNumberFormat=CH
Im angeführten Beispiel würde folgende Werte ermittelt werden:
newEncoding=UTF-8 aus
TARGET
Sektion (bothEncoding
)oldEncoding=UTF-8 aus
TARGET
Sektion (bothEncoding
)newNumberFormat=EN aus
GLOBAL
SektionoldNumberFormat=DE aus
GLOBAL
Sektion
[GLOBAL]
bothNumberFormat=DE
[DEFAULT]
bothEncoding=cp1252
newNumberFormat=CH
oldNumberFormat=US
[TARGET]
newEncoding=UTF-16
oldNumberFormat=EN
Im angeführten Beispiel würde folgende Werte ermittelt werden:
newEncoding=UTF-16 aus
TARGET
SektionoldEncoding=cp1252 aus
DEFAULT
Sektion (bothEncoding
)newNumberFormat=DE aus
GLOBAL
Sektion (bothNumberFormat
)oldNumberFormat=DE aus
GLOBAL
Sektion (bothNumberFormat
)
ncdiff --configurations <file.cfg> --newNumberFormat=DE
[GLOBAL]
bothNumberFormat=US
newEncoding=cp1252
[DEFAULT]
bothEncoding=UTF-8
newNumberFormat=EN
oldNumberFormat=CH
[TARGET]
newEncoding=UTF-16
oldNumberFormat=EN
Im angeführten Beispiel würde folgende Werte ermittelt werden:
newEncoding=cp1252 aus
GLOBAL
SektionoldEncoding=UTF-8 aus
DEFAULT
Sektion (bothEncoding
)newNumberFormat=DE aus Kommandozeile
oldNumberFormat=US aus
GLOBAL
Sektion (bothNumberFormat
)
ncdiff --configurations <file.cfg> --newNumberFormat=CH
[GLOBAL]
bothNumberFormat=EN
newNumberFormat=US
oldNumberFormat=DE
newEncoding=UTF-8
[DEFAULT]
bothEncoding=cp1252
newNumberFormat=DE
oldNumberFormat=US
[TARGET1]
newEncoding=UTF-16
oldNumberFormat=EN
Im angeführten Beispiel würde folgende Werte ermittelt werden:
newEncoding=UTF-8 aus
GLOBAL
SektionoldEncoding=cp1252 aus
DEFAULT
Sektion (bothEncoding
)newNumberFormat=CH aus Kommandozeile
oldNumberFormat=DE aus
GLOBAL
Sektion (oldNumberFormat
)
Spaltenkonvertierungen¶
Über die Konfigurationsparameter oldColumnFormats, newColumnFormats oder bothColumnFormats kann das Format der Zellwerte für spezifische Spalten festgelegt werden, um diese in eine der folgenden Datentypen für den Vergleich zu konvertieren:
Spaltenformat |
Kurzbeschreibung |
Datentyp |
---|---|---|
bool |
Wahrheitswerte: TRUE/FALSE. |
Boolean |
date |
Datumswerte ohne Uhrzeit. |
Date |
datetime |
Datumswerte mit Uhrzeit. |
Date & Time |
int |
Vorzeichenbehaftete Ganzzahlen. |
Integer |
modint |
Vorzeichenbehaftete Ganzzahlen in speziellem Format „00000123-“ welches in FixedWidth Dateien üblich ist. |
Integer |
float |
Fließkommazahlen. |
Float |
str |
Text |
String |
time |
Uhrzeit ohne Datum. |
Time |
bool¶
- Datentyp
Boolean
- Format
- Beschreibung
Wahrheitswerte. Folgende Textwerte können als TRUE oder FALSE erkannt werden:
Text mit Wahrheitswert TRUE
Text mit Wahrheitswert FALSE
1
0
True
False
true
false
TRUE
FALSE
Wahr
Falsch
wahr
falsch
WAHR
Falsch
Yes
No
yes
no
YES
NO
Ja
Nein
ja
nein
JA
NEIN
- Beispiel
1: bool, B: bool
date¶
- Datentyp
Date
- Format
%Y: Jahr mit Jahrhundert, z.B.: 2013
%y: Jahr ohne Jahrhundert, z.B.: 13
%m: Monat als Zahl, z.B.: 02
%d: Tag des Monats als Zahl, z.B.: 28
- Beschreibung
Parst Datumswerte ohne Uhrzeit: Die Formatangabe %Y-%m-%d kann Datumswerte im Format 2013-02-28 parsen.
- Beispiel
1: date;%Y-%m-%d
time¶
- Datentyp
Time
- Format
%H: Stunde für 24h Uhrzeit, z.B.: 17
%I: Stunde für 12h Uhrzeit, z.B.: 08
%p: AM/PM
%M: Minute der Stunde, z.B.: 13
%S: Sekunde der Minute, z.B.: 48
- Beschreibung
Parst Uhrzeitwerte ohne Datum: Die Formatangabe %H:%M:%S kann eine Uhrzeit im Format 17:08:48 parsen.
- Beispiel
C: time;%H:%M:%S
datetime¶
- Datentyp
Date and Time
- Format
%Y: Jahr mit Jahrhundert, z.B.: 2013
%y: Jahr ohne Jahrhundert, z.B.: 13
%m: Monat als Zahl, z.B.: 02
%d: Tag des Monats als Zahl, z.B.: 28
%H: Stunde für 24h Uhrzeit, z.B.: 17
%I: Stunde für 12h Uhrzeit, z.B.: 08
%p: AM/PM
%M: Minute der Stunde, z.B.: 13
%S: Sekunde der Minute, z.B.: 48
- Beschreibung
Parst Datumswerte mit Uhrzeit: Die Formatangabe %Y-%m-%d %H:%M:%S kann Datumswerte im Format 2013-02-28 17:08:48 parsen.
- Beispiel
1: datetime;%Y-%m-%d %H:%M:%S
str¶
- Datentyp
String
- Format
i: ignorieren von Groß- Kleinschreibung
- Beschreibung
Verwendet den Text wie er in der Zelle steht.
- Beispiel
1: str, 10: str;i
int¶
- Datentyp
Integer
- Format
Keines oder „US“.
- Beschreibung
Wandelt den Text der Zelle in eine Ganzzahl um. Bei US Format werden Zahlen die in runden Klammern stehen als negative Zahl interpretiert: (5000) => -5000.
Wird kein Format angegeben so wird das eingestellte oldNumberFormat, newNumberFormat, bothNumberFormat verwendet.
- Beispiel
1: int, 3: int;US
modint¶
- Datentyp
Integer
- Format
- Beschreibung
Wandelt den Text der Zelle in eine Ganzzahl um. Bei modint wird erwartet dass die Zahlen im Format 000000123456- oder 000000123456+ vorliegen. Das Vorzeichen am Ende wird zwingend vorrausgesetzt.
- Beispiel
1: modint
float¶
- Datentyp
Float
- Format
Keines oder „DE“, „EN“, „US“.
- Beschreibung
Wandelt den Text der Zelle in eine Gleitkommazahl um:
DE: -5.000,7 oder -5000,7 => -5000,7
EN: -5,000.7 oder -5000.7 => -5000,7
US: (5,000.7) oder (5000.7) => -5000,7
Wird kein Format angegeben so wird das eingestellte oldNumberFormat, newNumberFormat, bothNumberFormat verwendet.
- Beispiel
1: float, 3: float;EN
Platzhalter in Dateinamen¶
NCDiff bietet die Möglichkeit in Dateinamen Platzhalter anzugeben, welche während des Diff Laufs ersetzt werden.
Platzhalter werden in den resultDirectory, HTMLResourcesDirectory, oldDirectory, newDirectory, resultFilterDirectory,
resultFilterFilePath
Konfigurationseinträgen unterstützt.
Folgende Platzhalter sind möglich:
- ${VARIABLE}
Wird durch den Namen der Umgebungsvariable ersetzt
- ~/ oder ~Benutzer/
Wird durch den Benutzernamen ersetzt
- {DATUMSFORMAT}
DATUMSFORMAT ist ein Python datetime Format
%Y: Jahr mit Jahrhundert, z.B.: 2013
%y: Jahr ohne Jahrhundert, z.B.: 13
%m: Monat als Zahl, z.B.: 02
%d: Tag des Monats als Zahl, z.B.: 28
%H: Stunde für 24h Uhrzeit, z.B.: 17
%I: Stunde für 12h Uhrzeit, z.B.: 08
%p: AM/PM
%M: Minute der Stunde, z.B.: 13
%S: Sekunde der Minute, z.B.: 48
- {DATUMSFORMAT![+-]ZAHL[smhdbwy]}
DATUMSFORMAT siehe {DATUMSFORMAT} [+-]ZAHL[smhdbwy] erlaubt Zeitanpassungen relativ zu Datum und Uhrzeit des aktuellen Laufs um den Wert +ZAHL oder -ZAHL. Die Art der Anpassung wird über einen der Buchstaben smhdbwy festgelegt:
s: Anpassung von Sekunden
m: Anpassung von Minuten
h: Anpassung von Stunden
d: Anpassung von Tagen
b: Anpassung von Geschäftstagen. Ein Geschäftstag ist von Mo-Fr.
w: Anpassung von Wochen
y: Anpassung von Jahren
Zusätzlich zur Verwendung von Platzhaltern ist die Verwendung von Wildcards für die alte und neue Eingabedatei vorgesehen. Die jeweilige Datei wird gefunden wenn ein * oder ? Muster auf eine existierende Datei zutrifft. Existieren mehre Report Dateien so wird die Datei mit dem letzten Änderungstermin verwendet.
Beispiel Platzhalter und Wildcards¶
Die Verzeichnisstruktur sieht wie folgt aus:
- reports
- prod Produktiv Reports
- 2013-02-22 Lauf zum letzten Geschäftstag (Freitag)
- risk Zwei Reports vom selben Abend
delta_gamma_theta-2013-02-22_173000.csv
delta_gamma_theta-2013-02-22_205517.csv
…
…
- test Test Reports
- 2013-02-22 Lauf zum letzten Geschäftstag (Freitag)
- risk Report wurde am Montag um 3h erstellt
delta_gamma_theta-2013-02-25_030048.csv
…
…
Eine mögliche Konfiguration für die alt Referenzdateien ist:
oldDirectory=/reports/prod/{%Y-%m-%d!-1b}/
oldFilePath=risk/delta_gamma_theta-{%Y-%m-%d!-1b}_??????.csv
oder alternativ:
oldFilePath=risk/delta_gamma_theta-*.csv
Die Konfiguration für neu Testdateien kann so aus sehen:
newDirectory=/reports/test/{%Y-%m-%d!-1b}/
newFilePath=risk/delta_gamma_theta-{%Y-%m-%d}_??????.csv
oder alternativ:
newFilePath=risk/delta_gamma_theta-*.csv
Wie funktioniert das Auffinden der Dateien?¶
Am Beispiel alt Referenzdaten, Diff Lauf am Montag, den 25.02.2013.
Zuerst werden die Platzhalter ersetzt:
oldDirectory=/reports/prod/2013-02-22/
oldFilePath=risk/delta_gamma_theta-2013-02-22_??????.csv
Als nächstes wird mittels Wildcards nach Dateien gesucht. Dabei werden die beiden Dateien
delta_gamma_theta-2013-02-22_173000.csv
delta_gamma_theta-2013-02-22_205517.csv
gefunden.
Von diesen beiden Dateien wird die letzte Änderungszeit am Dateisystem ermittelt und die neueste ausgewählt. Für den Diff Lauf wird also
delta_gamma_theta-2013-02-22_205517.csv
als alt Referenzdatei gewählt.