CSVfox
Leverage Your Data.

Ausdrücke und ihre Auflösung

Ausdrücke und ihre Auflösung in CSVfox Befehlen

Allgemein

Ausdrücke sind in CSVfox Befehlen allgegenwärtig.
Sie werden zur Laufzeit für jede einzelne CSV Datenzeile und für jedes einzelne CSV Datenfeld aufgelöst.

Ausdrücke können verwendet werden
  • als Inhalt, der einem CSV Feld zugewiesen werden soll:
    -add[Bruttopreis]=([Nettopreis]*[TaxFactor])
  • als Bedingung für die Ausführung eines Befehls:
    -if{...}//set[field]= ... 
  • als Filterbedingung für die Ausgabe von Datenzeilen in die Ausgabedatei:
    -filter[Obst]!c=Apfel/Birne
Ein Ausdruck für den Inhalt eines Feldes ergibt eine Zeichenfolge, die in dieses Feld eingefügt wird.
Als Bedingung liefert ein Ausdruck einen Wahrheitswert, der entscheidet, ob die Bedingung erfüllt ist oder nicht.

Auflösen eines Ausdrucks

Auflösen bedeutet, alle notwendigen Ersetzungen innerhalb eines Ausdrucks vorzunehmen.

Dies ist eine der Hauptfunktionen von CSVfox, bei der die Ausgabedaten entsprechend Ihren Anforderungen aus der Eingabe erstellt werden.
Die Auflösung erfolgt zeilenweise, was bedeutet, dass alle (aber nur die) Daten der aktuellen Datenzeile für die Verarbeitung verfügbar sind.

Wenn die Auflösung auf der Eingabeseite erfolgt (+set, +replace, +regex, +add usw.), sind nur die Daten der aktuell gelesenen Eingabe- oder Seriendatei verfügbar. Die Auflösung auf der Ausgabeseite (-set, -replace, -regex, -add usw.) erfolgt anschließend und arbeitet mit allen Daten der Eingabe- und Seriendateien, die für die Ausgabe zu einer einzigen Datenzeile zusammengefasst werden.

Auflösen umfasst:

  • Einfügen bekannter Daten, wie die aktuelle Zeilennummer für (#) oder den ursprünglichen Inhalt des aktuellen Feldes anstelle von [*]
  • Interpretieren, Umformatieren und Einfügen von numerischen CSV Datenfeldern
  • Berechnung von Formeln aus numerischen CSV Datenfeldern und Ausdrücken und Einfügen des (optional formatierten) Ergebnisses
  • und das Einfügen aller anderen CSV Felder und Variablen nach Bedarf.

Ein einfaches Beispiel: Auflösen eines numerischen Ausdrucks

Als Eingabedatei haben wir eine einfache CSV Tabelle über die Preise von verkauftem Obst.

Wir möchten den Bruttoverkaufspreis zusammen mit einem Werbetext anzeigen. Leider haben wir nur die Nettopreise, aber die Tabelle enthält auch den Umsatzsteuersatz.
ObstNettopreisVerkaufssteuer
Äpfel2,0019
Birnen3,0019
Jetzt erstellen wir eine weitere Spalte "Sonderangebot".
-add[Sonderangebot]="Nur heute: {([Nettopreis]*(1+([Umsatzsteuer]/100)),2} Euro!"

Dieser Befehl fügt der Ausgabedatei eine neue Spalte mit dem Namen "Sonderangebot" hinzu.
Für jede einzelne Zeile ist dies der Ausdruck, der dem Spalteninhalt zugewiesen wird:
Nur heute: {([Nettopreis]*(1+([Umsatzsteuer]/100)),2} Euro!
Als Teil des Ausdrucks sehen wir eine Formel, die zunächst berechnet und formatiert werden muss:
{([Nettopreis]*(1+([Umsatzsteuer]/100)),2}

Dieser Ausdruck muss aufgelöst werden und das Ergebnis wird in das neue Spaltenfeld [Sonderangebot] eingefügt.
Zu diesem Zweck wird der Wert der Spalte "Nettopreis" mit einem Faktor multipliziert, der sich aus dem Wert der Spalte "Mehrwertsteuer" ergibt. Das Ergebnis wird für die Ausgabe mit Dezimalpunkt und zwei Nachkommastellen formatiert. Dieser Wert ist in eine Zeichenfolge eingebettet, die mit "Nur heute: " beginnt, dann folgt die formatierte Zahl und am Ende steht " Euro!".

Dies wird die Ausgabedatei sein:

ObstNettopreisMehrwertsteuerSonderangebot
Äpfel2,0019Nur heute: 2,38 Euro!
Birnen3,0019Nur heute: 3,57 Euro!

Weitere Informationen zum Abrufen von CSV Feldinhalten finden Sie unter CSV Zugang zu Feldern.

Schutz vor Sonderzeichen

Es gibt einige Zeichen, die eine besondere Bedeutung haben.
[, ] bezeichnen einen Spaltennamen oder eine Feldreferenz.
(, ) bezeichnen eine numerische Interpretation eines Feldes oder eine Formel.
{, } bezeichnen entweder einen Bedingungsausdruck oder ein formatiertes Feld.
/ wird häufig als Trennzeichen zwischen Bedingungen, Befehlen oder Alternativen verwendet (und ist auch ein Formeloperator)
= bedeutet eine Zuweisung innerhalb eines Befehls
...
_ bedeutet "nichts", wenn es allein und nicht als Teil eines anderen Ausdrucks steht. Nützlich, um "leer" auszudrücken, wenn die umgebenden "/"-Trennzeichen sonst zusammenfallen und zu einem irreführenden Befehlskonstrukt führen würden.

Wenn Sie eines dieser Zeichen als Literale in einem Text oder Ausdruck verwenden müssen, muss es "escaped" werden. Dies verhindert eine Fehlinterpretation des Zeichens, wenn der Ausdruck von der Anwendung aufgelöst wird.

Dies geschieht, indem ein Backslash (\) vor das Zeichen gesetzt wird.

Also, dies: [Feldname] wird durch den Textinhalt des Feldes "Feldname" ersetzt.
Aber dies: \[Feldname\] steht für den wörtlichen Text "[Feldname]".

Für einen wörtlichen Backslash "\" muss der Backslash dupliziert werden: \\.

Under construction, coming soon