TypeCaster¶
Kurzbeschreibung¶
TypeCaster ist ein General Brick. Er übersetzt verarbeite Datenobejekte in ein angegebenen Datentypen.
Input¶
TypeCaster besitzt einen Input-Port.
Input = <variant -> variant> : doc "structure documentation";
Als Input bekommt TypeCaster eine Datenmap im folgenden Beispielschema:
sample_data = {
"attempt.two": "22",
"tags": {
"Customer": "EXAMPLE"
},
"fields": {
"time": "2020-07-09 19:48:39",
"station": "hadzeae02v",
"procname": "PROC05",
"current": "63782912",
"peak": "312631296",
}
}
Output¶
TypeCaster besitzt einen Output-Port.
Output = {
"tags" -> <string -> variant>,
"fields" -> <string -> variant>
} : doc "structure documentation";
Als Output entsendet TypeCaster eine Datenmap im folgenden Beispielschema:
{
"attempt.two": 22,
"tags": {
"Customer": "EXAMPLE"
},
"fields": {
"time": "2020-07-09 19:48:39",
"station": "hadzeae02v",
"procname": "PROC05",
"current": 63782912,
"peak": 312631296,
"duration": "0,15651"
}
}
Parametrisierung¶
TypeCaster hat folgende Parameter:
Fields
Fields¶
Fields
ist eine Ansammlung von Schlüsseln und ihren dazugehörigen
Datentyp. Sie weden über Semicolons voneinander getrennt. Wird der Schlüssel
im ganze als ein string
interpretiert, so muss sie sich in Anfürhungszeichen
befinden. Handelt es sich um einen Pfad, dann benötigt es keine
Anführungszeichen.
Beispiel:
'"attempt.two"=int;fields.peak=int;fields.current=int"
Standardwert: ``
string
Pflichtfeld
Funktion¶
TypeCaster überprüft als erstes den Field
-Parameter. Anschließend werden
die ankommenden Daten analysiert. Die Werte aus dem Flow-Paket werden
entnommen, ein neues Daten-Objekt initializiert und die Werte im neuen
Datenformat eingesetzt. Dies wird durch folgendes Beispiel deutlich.
Gegeben sei folgendes Flow-Paket:
sample_data = {
"attempt.two": "22",
"tags": {
"Customer": "EXAMPLE"
},
"fields": {
"time": "2020-07-09 19:48:39",
"station": "hadzeae02v",
"procname": "PROC05",
"current": "63782912",
"peak": "312631296",
}
}
Nun sollen das Datenformat von den Schlüsseln attempt.two
, current
und peak
von string
zu integer
geändert werden. Dazu muss im UI
zu dem Parameter Fields
folgendes eingegeben werden:
'"attempt.two"=int;fields.peak=int;fields.current=int"
Dabei sind zwei wichtige Notationen im Anbetracht der Daten zu
berücksichtigen. peak
und current
sind Datenschlüssel in einer Map.
Sie besitzen einen Pfad. Dieser wird durch eine Punktnotation deutlich
gemacht. Dabei muss der Pfad für die beiden Schlüssel folgendermaßen
aussehen: fields.peak=int;fields.current=int
. Getrennt werden beide Paare
durch das Semikolon. Bei attempt.two
handelt es sich nicht um ein
Pfad sondern um den Namen des Schlüssels. Daher wird dieser duch zwei
Anführungszeichen verdeutlicht: "attempt.two"=int
. Der Output
aus den Beispieldaten ist dann folgendes:
{
"attempt.two": 22,
"tags": {
"Customer": "EXAMPLE"
},
"fields": {
"time": "2020-07-09 19:48:39",
"station": "hadzeae02v",
"procname": "PROC05",
"current": 63782912,
"peak": 312631296,
"duration": "0,15651"
}
}
WICHTIG: Sollten Pfade zu Schlüssel genannt werden, die nicht existieren, werden diese ignoriert.
Python-Module¶
TypeCaster benutzt folgende Python-Module:
jmespath