De verschillende bestanden van een Datastreams configuratie worden aangeboden als CSV-bestand per entiteit. Elk feit of dimensie heeft een losse file met dezelfde technische indeling. Het CSV-formaat is een veelgebruikt formaat voor gegevensuitwisseling. Omdat het al jarenlang een standaard is, wordt het ondersteund door vrijwel alle rapportage-, analyse- en BI-tools. We volgen de rfc 4180 standaard, met als uitzondering dat we de puntkomma gebruiken als scheidingsteken in plaats van de komma. Dit is een gebruikelijke aanpassing in Europa om problemen met decimaaltekens te voorkomen.
Separator
De kolommen binnen de CSV worden gescheiden door een vast teken. Dit teken is altijd de ; (puntkomma).
Regel einde
Elke regel eindigt met een Carriage return en Line feed karakter (CR/LF). Deze niet zichtbare tekens zijn de standaard voor regeleindes op Windows systemen.
Header regel
Elk bestand bevat op de eerste regel een header met daarin de namen van alle kolommen. Deze regel bevat geen text qualifiers. Dit geeft geen problemen, omdat we nooit vreemde tekens in kolomnamen gebruiken.
Data regel
Elke data regel bevat een record met voor elke kolom uit de header een waarde. Deze waarde bestaat uit alle tekens tot de volgende separator. Elke kolom is altijd aanwezig. Als er geen waarde is staan de separators tegen elkaar (zie voorbeeld record 2).
Waarden met het data type tekst worden omsloten door text qualifiers (zie voorbeeld kolom Kolom met tekst). Vreemde tekens in die tekst kunnen zo worden verwerkt omdat duidelijk is dat ze bij de inhoud behoren. Het enige teken dat speciale verwerking vereist, is de text qualifier zelf. Dubbele quotes worden daarom geëscaped door er een extra dubbele quote voor te zetten, zodat ze toch verwerkt kunnen worden zonder de structuur van de file aan te tasten (zie voorbeeld record 5).
Als de file ook waardes met een decimaal bevat, dan is het decimaalteken gebruikt wat in de configuratie ingesteld is. Dit kan zowel een punt als een komma zijn.
voorbeeld CSV
Kolom recordnummer;Kolom met tekst;Kolom met decimaal;Kolom met nummer 1;"een tekstwaarde voor dit record";20,8;123 2;"een andere waarde voor het tweede record";;369 3;"de derde tekstwaarde";19,7;123 4;"een tekst met lastige tekens; bijvoorbeeld een punt komma";19,8;369 5;"een tekst waarin de text qualifier voorkomt voor ""een quote"" is extra lastig";20,4;123
Schoning inhoud
Om problemen met de verwerking van de CSV te voorkomen verwijderen we CR/LF karakters uit de inhoudelijke tekst door deze te vervangen met een spatie. De spatie zorgt ervoor dat tekst niet onbedoeld aan elkaar komt te staan.