Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Diese Seite enthält Anweisungen zum Verwalten von Azure IoT Operations-Komponenten mithilfe von Kubernetes-Bereitstellungsmanifesten, die sich in DER VORSCHAU befinden. Diese Funktion ist mit einigen Einschränkungen versehen und sollte nicht für Produktions-Workloads verwendet werden.
Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.
Sie können Datenflusskonvertierungen verwenden, um Daten in Azure IoT Einsatz zu transformieren. DasKonvertierungselement in einem Datenfluss wird dazu verwendet, Werte für Ausgabefelder zu berechnen. Sie können in Datenflusskonvertierungen Eingabefelder, verfügbare Vorgänge, Datentypen und Typkonvertierungen verwenden.
Das Konvertierungselement eines Datenflusses wird verwendet, um Werte für Ausgabefelder zu berechnen:
inputs: [
'*.Max' // - $1
'*.Min' // - $2
]
output: 'ColorProperties.*'
expression: '($1 + $2) / 2'
Es gibt mehrere Aspekte, die Sie bei Konversionen verstehen müssen:
- Referenz auf Eingabefelder: Wie referenziert man Werte aus Eingabefeldern in der Konversion-Formel.
- Verfügbare Operationen: Operationen, die in Konversionen verwendet werden können. Zum Beispiel Addition, Subtraktion, Multiplikation und Division.
- Datentypen: Datentypen, die eine Formel verarbeiten und manipulieren kann. Zum Beispiel Ganzzahl, Fließkomma und Zeichenfolge.
- Typkonvertierungen: Wie Datentypen zwischen den Eingabefeldwerten, der Evaluierung der Formel und den Ausgabefeldern konvertiert werden.
Eingabefelder
Bei Konversionen können Formeln mit statischen Werten wie z. B. einer Zahl 25 oder mit aus Eingabefeldern abgeleiteten Parametern arbeiten. Eine Zuordnung definiert diese Eingabefelder, auf die die Formel zugreifen kann. Jedes Feld wird entsprechend seiner Reihenfolge in der Eingabeliste referenziert:
inputs: [
'*.Max' // - $1
'*.Min' // - $2
'*.Mid.Avg' // - $3
'*.Mid.Mean' // - $4
]
output: 'ColorProperties.*'
expression: '($1, $2, $3, $4)'
In diesem Beispiel führt die Konversion zu einem Array, das die Werte von [Max, Min, Mid.Avg, Mid.Mean] enthält. Die Kommentare in der YAML-Datei (# - $1, # - $2) sind optional, helfen aber dabei, die Verbindung zwischen jeder Feldeigenschaft und ihrer Rolle in der Konversionsformel zu verdeutlichen.
Datentypen
Verschiedene Serialisierungsformate unterstützen unterschiedliche Datentypen. JSON bietet zum Beispiel einige primitive Typen: Zeichenfolge, Zahl, boolesch und null. Es enthält auch Arrays dieser primitiven Typen.
Wenn der Mapper eine Eingabeeigenschaft liest, konvertiert er sie in einen internen Typ. Diese Konversion ist notwendig, um die Daten im Speicher zu halten, bis sie in ein Ausgabefeld geschrieben werden. Die Konversion in einen internen Typ erfolgt unabhängig davon, ob die Eingabe- und Ausgabeserialisierungsformate gleich sind.
Bei der internen Darstellung werden die folgenden Datentypen verwendet:
| type | BESCHREIBUNG |
|---|---|
bool |
Logisch wahr/falsch. |
integer |
Gespeichert als 128-Bit-Ganzzahl mit Vorzeichen. |
float |
Gespeichert als 64-Bit-Gleitkommazahl. |
string |
Eine UTF-8 Zeichenfolge. |
bytes |
Binärdateien, eine Zeichenfolge von 8-Bit-Werten ohne Vorzeichen. |
datetime |
UTC oder lokale Zeit mit Nanosekunden-Auflösung. |
time |
Tageszeit mit Nanosekunden-Auflösung. |
duration |
Eine Dauer mit Nanosekunden-Auflösung. |
array |
Ein Array mit einem der zuvor aufgeführten Typen. |
map |
Ein Vektor von (Schlüssel, Wert)-Paaren beliebiger, zuvor aufgeführter Typen. |
Felder für Eingabedatensätze
Wenn ein Eingabedatensatz gelesen wird, wird sein zugrunde liegender Typ in eine dieser internen Typvarianten umgewandelt. Die interne Darstellung ist flexibel genug, um die meisten Eingabetypen mit minimaler oder ohne Konversion zu handhaben.
Für einige Formate werden Surrogat-Typen verwendet. JSON hat zum Beispiel keinen datetime-Typ und speichert stattdessen datetime-Werte als Zeichenfolgen, die gemäß ISO8601 formatiert sind. Wenn der Mapper ein solches Feld liest, bleibt die interne Darstellung eine Zeichenfolge.
Felder für Ausgabedatensätze
Der Mapper ist so konzipiert, dass er flexibel ist, indem er interne Typen in Ausgabetypen konvertiert, um Szenarien zu ermöglichen, in denen Daten aus einem Serialisierungsformat mit einem begrenzten Typsystem stammen. Die folgenden Beispiele zeigen, wie Konversionen gehandhabt werden:
-
Numerische Typen: Diese Typen können in andere Darstellungen konvertiert werden, auch wenn dies einen Verlust an Präzision bedeutet. Zum Beispiel kann eine 64-Bit-Gleitkommazahl (
f64) in eine 32-Bit-Ganzzahl (i32) umgewandelt werden. -
Zeichenfolgen in Zahlen: Wenn der Eingangsdatensatz eine Zeichenfolge wie
123enthält und das Ausgabefeld eine 32-Bit Ganzzahl ist, konvertiert der Mapper den Wert und schreibt ihn als Zahl. -
Zeichenfolgen in andere Typen:
- Wenn das Ausgabefeld
datetimeist, versucht der Mapper, die Zeichenfolge als ISO8601-formatiertesdatetimezu parsen. - Wenn das Ausgabefeld
binary/bytesist, versucht der Mapper, die Zeichenfolge aus einer base64-kodierten Zeichenfolge zu deserialisieren.
- Wenn das Ausgabefeld
-
Boolesche Werte:
- Wird in
0/1umgewandelt, wenn das Ausgabefeld numerisch ist. - Konvertiert in
true/false, wenn das Ausgabefeld eine Zeichenfolge ist.
- Wird in
Verwenden Sie eine Konvertierungsformel mit Typen
In Zuordnungen kann eine optionale Formel angeben, wie die Daten aus der Eingabe verarbeitet werden, bevor sie in das Ausgabefeld geschrieben werden. Wenn keine Formel angegeben wird, kopiert der Mapper das Eingabefeld in die Ausgabe, indem er die internen Typ- und Konvertierungsregeln verwendet.
Wenn eine Formel angegeben wird, sind die Datentypen, die für die Verwendung in Formeln zur Verfügung stehen, auf folgende beschränkt:
- Ganze Zahlen
- Gleitkommazahlen
- Zeichenfolgen
- Boolesche Werte
- Arrays der vorangehenden Typen
- Fehlende Werte
Map und byte können nicht in Formeln verwendet werden.
Typen, die sich auf die Zeit beziehen (datetime, time und duration), werden in Ganzzahlwerte umgewandelt, die die Zeit in Sekunden darstellen. Nach der Evaluierung der Formel werden die Ergebnisse in der internen Darstellung gespeichert und nicht zurück konvertiert. Zum Beispiel bleibt datetime, umgewandelt in Sekunden, eine Ganzzahl. Wenn der Wert in datetime-Feldern verwendet werden soll, muss eine explizite Konvertierungsmethode angewendet werden. Ein Beispiel ist die Konvertierung des Wertes in eine ISO8601 Zeichenfolge, die automatisch in den Typ datetime des Ausgabeserialisierungsformats konvertiert wird.
Unregelmäßige Typen verwenden
Besondere Überlegungen gelten für Typen wie Arrays und fehlende Werte.
Arrays
Arrays können mit Hilfe von Aggregationsfunktionen verarbeitet werden, um einen einzelnen Wert aus mehreren Elementen zu berechnen. Zum Beispiel, indem Sie den Datensatz verwenden:
{
"Measurements": [2.34, 12.3, 32.4]
}
Mit der Zuordnung:
inputs: [
'Measurements' // - $1
]
output: 'Measurement'
expression: 'min($1)'
Diese Konfiguration wählt den kleinsten Wert aus dem Measurements-Array für das Ausgabefeld aus.
Arrays können auch aus mehreren Einzelwerten erstellt werden:
inputs: [
'minimum' // - - $1
'maximum' // - - $2
'average' // - - $3
'mean' // - - $4
]
output: 'stats'
expression: '($1, $2, $3, $4)'
Diese Zuordnung erstellt ein Array, das das Minimum, das Maximum, den Durchschnitt und den Mittelwert enthält.
Fehlende Werte
Ein fehlender Wert ist ein spezieller Typ, der in Szenarien wie z. B.:
- Behandeln von fehlenden Feldern in der Eingabe durch Bereitstellung eines alternativen Wertes.
- Bedingtes Entfernen eines Feldes auf der Grundlage seines Vorhandenseins.
Beispiel einer Zuordnung, die einen fehlenden Wert verwendet:
{
"Employment": {
"Position": "Analyst",
"BaseSalary": 75000,
"WorkingHours": "Regular"
}
}
Der Datensatz enthält das Feld BaseSalary, aber möglicherweise ist es optional. Angenommen, das Feld fehlt, muss ein Wert aus einem Dataset zur Kontextualisierung hinzugefügt werden:
{
"Position": "Analyst",
"BaseSalary": 70000,
"WorkingHours": "Regular"
}
Eine Zuordnung kann prüfen, ob das Feld im Eingabedatensatz vorhanden ist. Wenn das Feld gefunden wird, erhält die Ausgabe diesen vorhandenen Wert. Andernfalls erhält die Ausgabe den Wert aus dem Kontext-Dataset. Beispiel:
inputs: [
'BaseSalary' // - - - - - - - - - - - $1
'$context(position).BaseSalary' // - $2
]
output: 'BaseSalary'
expression: 'if($1 == (), $2, $1)'
Die conversion verwendet die if-Funktion, die drei Parameter hat:
- Der erste Parameter ist eine Bedingung. In diesem Beispiel wird geprüft, ob das Feld
BaseSalarydes Eingabefeldes (alias$1) der fehlende Wert ist. - Der zweite Parameter ist das Ergebnis der Funktion, wenn die Bedingung im ersten Parameter wahr ist. In diesem Beispiel ist es das Feld
BaseSalarydes Datasets für die Kontextualisierung (alias$2). - Der dritte Parameter ist der Wert für die Bedingung, wenn der erste Parameter falsch ist.
Verfügbare Funktionen
Datenflüsse stellen eine Reihe integrierter Funktionen bereit, die in Konvertierungsformeln verwendet werden können. Diese Funktionen können verwendet werden, um allgemeine Vorgänge wie Arithmetik, Vergleich und Zeichenfolgenmanipulation auszuführen. Die verfügbaren Funktionen sind:
| Funktion | BESCHREIBUNG | Beispiele |
|---|---|---|
min |
Gibt den Minimalwert aus einem Array zurück. |
min(2, 3, 1) gibt 1, min($1) gibt den Minimalwert aus dem Array $1 zurück. |
max |
Gibt den Maximalwert aus einem Array zurück. |
max(2, 3, 1) gibt 3, max($1) gibt den Maximalwert aus dem Array zurück $1 |
if |
Rückgabe zwischen Werten basierend auf einer Bedingung. |
if($1 > 10, 'High', 'Low') gibt 'High' zurück, wenn $1 größer ist als 10, andernfalls 'Low' |
len |
Gibt die Zeichenlänge einer Zeichenfolge oder die Anzahl der Elemente in einem Tupel zurück. |
len("Azure") gibt 5 zurück, len(1, 2, 3) gibt 3 zurück, len($1) gibt die Anzahl der Elemente im Array zurück $1 |
floor |
Gibt die größte Ganzzahl zurück, die kleiner oder gleich einer Zahl ist. |
floor(2.9) gibt 2 zurück. |
round |
Gibt die einer Zahl am nächsten liegende Ganzzahl zurück, wobei in der Hälfte der Fälle von 0,0 abgerundet wird. |
round(2.5) gibt 3 zurück. |
ceil |
Gibt die kleinste Ganzzahl zurück, die größer oder gleich einer Zahl ist. |
ceil(2.1) gibt 3 zurück. |
scale |
Skaliert einen Wert von einem Bereich auf einen anderen. |
scale($1, 0, 10, 0, 100) skaliert den Eingabewert vom Bereich 0 bis 10 auf den Bereich 0 bis 100 |
Konvertierungsfunktionen
Datenflüsse bieten mehrere integrierte Konvertierungsfunktionen für die Umwandlung gewöhnlicher Einheiten wie Temperatur, Druck, Länge, Gewicht und Volumen. Im Folgenden finden Sie einige Beispiele:
| Konvertierung | Formel | Funktionsname |
|---|---|---|
| Celsius zu Fahrenheit | F = (C * 9/5) + 32 | cToF |
| PSI zu Bar | Bar = PSI * 0,0689476 | psiToBar |
| Zoll zu cm | Cm = Zoll * 2,54 | inToCm |
| Fuß zu Meter | Meter = Fuß * 0,3048 | ftToM |
| Pfund zu kg | Kg = Pfund * 0,453592 | lbToKg |
| Gallonen zu Litern | Liter = Gallonen * 3,78541 | galToL |
Umgekehrte Konversionen werden ebenfalls unterstützt:
| Konvertierung | Formel | Funktionsname |
|---|---|---|
| Fahrenheit zu Celsius | C = (F - 32) * 5/9 | fToC |
| Bar zu PSI | PSI = Bar / 0,0689476 | barToPsi |
| Cm zu Zoll | Inch = cm / 2,54 | cmToIn |
| Meter zu Fuß | Fuß = Meter / 0,3048 | mToFt |
| Kg zu Pfund | Pfund = kg / 0,453592 | kgToLb |
| Liter zu Gallonen | Gallonen = Liter / 3,78541 | lToGal |
Darüber hinaus können Sie Ihre eigenen Konversionsfunktionen mit Hilfe grundlegender mathematischer Formeln definieren. Das System unterstützt Operatoren wie Addition (+), Subtraktion (-), Multiplikation (*) und Division (/). Diese Operatoren folgen standardmäßigen Prioritätsregeln, die mit Hilfe von Klammern angepasst werden können, um die richtige Reihenfolge der Operationen zu gewährleisten. Dies bietet Ihnen die Möglichkeit, die Konversion von Einheiten an die jeweiligen Anforderungen anzupassen.
Verfügbare Operatoren nach Priorität
| Bediener | BESCHREIBUNG |
|---|---|
| ^ | Potenzierung: $1 ^ 3 |
Da Exponentiation die höchste Priorität hat, wird er zuerst ausgeführt, es sei denn, Klammern überschreiben diese Reihenfolge:
-
$1 * 2 ^ 3wird als$1 * 8interpretiert, weil das2 ^ 3Element zuerst ausgeführt wird, vor der Multiplikation. -
($1 * 2) ^ 3verarbeitet die Multiplikation vor der Potenzierung.
| Bediener | BESCHREIBUNG |
|---|---|
| - | Verneinung |
| ! | Logisches Nicht |
Negation und Logical not haben eine hohe Priorität, so dass sie sich immer an ihren unmittelbaren Nachbarn halten, außer wenn es um Potenzierung geht:
-
-$1 * 2negiert zuerst$1und multipliziert dann. -
-($1 * 2)multipliziert und negiert dann das Ergebnis.
| Bediener | BESCHREIBUNG |
|---|---|
| * | Multiplikation: $1 * 10 |
| / | Division: $1 / 25 (Das Ergebnis ist eine Ganzzahl, wenn beide Argumente Ganzzahlen sind, ansonsten eine Fließkommazahl) |
| % | Modulo: $1 % 25 |
Multiplication, Division und Modulo, die die gleiche Priorität haben, werden von links nach rechts ausgeführt, sofern die Reihenfolge nicht durch Klammern geändert wird.
| Bediener | BESCHREIBUNG |
|---|---|
| + | Addition für numerische Werte, Verkettung für Zeichenfolgen |
| - | Subtraktion |
Addition und Subtraction werden als schwächere Operationen im Vergleich zu den Operationen der vorherigen Gruppe betrachtet:
-
$1 + 2 * 3führt zu$1 + 6, weil2 * 3wegen der höheren Priorität vonmultiplicationzuerst ausgeführt wird. -
($1 + 2) * 3priorisiertAdditionvorMultiplication.
| Bediener | BESCHREIBUNG |
|---|---|
| < | Kleiner als |
| > | Größer als |
| <= | Kleiner als oder gleich |
| >= | Größer als oder gleich |
| == | Gleich |
| != | Ungleich |
Comparisons operieren mit numerischen, booleschen und Zeichenfolge-Werten. Da sie eine niedrigere Priorität haben als arithmetische Operatoren, sind keine Klammern erforderlich, um die Ergebnisse effektiv zu vergleichen:
-
$1 * 2 <= $2ist äquivalent zu($1 * 2) <= $2.
| Bediener | BESCHREIBUNG |
|---|---|
| || | Logisches OR |
| && | Logisches AND |
Logische Operatoren werden zur Verkettung von Bedingungen verwendet:
$1 > 100 && $2 > 200