Szenario: Maßeinheiten mit einem digitalen Zwillingsadapter normalisieren
In diesem Szenario wird erläutert, wie Sie ein digitales Zwillingsmodell, einen digitalen Zwillingsadapter mit Umschlag- und Routingzuordnungen verwenden, um bestimmte Telemetrie in ein gemeinsames Schema zu normalisieren, und wie Sie den Fluss validieren, indem Sie Beispielgeräte-Payloads posten.
Dieses Szenario zeigt, wie Telemetriedaten aus der Automobilindustrie mit verschiedenen Einheiten von Messmeilen pro Stunde und Kilometern pro Stunde mit verschiedenen Endpunkten, zwei digitalen Zwillingsinstanzen und zwei verschiedenen externen Schlüsseln veröffentlicht werden. Weitere Informationen zu den in diesem Szenario referenzierten JQ-Mustern finden Sie unter Referenz: JQ-Ausdrücke für digitale Zwillingsadapter
Ein Digital Twin Adapter führt Anforderungen nach Endpunkt und maps Payloads zu einem einzigen Modell. Beispiel: Das Metrikmodell sendet die Geschwindigkeit in Kilometern pro Stunde (velocity_kph), während andere standardmäßige digitale Zwillingsinstanz Meilen pro Stunde sendet (speed).
Aufgaben
Bevor Sie beginnen
Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen und die OCI-CLI konfiguriert ist. Weitere Informationen finden Sie unter Voraussetzungen, Policy-Details für die Internet of Things-(IoT-)Plattform und JSON-Datei für komplexe Eingaben verwenden.
Verstehen Sie die Dateien in diesem Szenario:
Code-Snippets, die Sie in Ihrem digitalen Zwillingsmodell verwenden können, auf das in den folgenden Schritten verwiesen wird:
model.json: Digitales Zwillingsmodell basierend auf DTDL v3-Spezifikationen mit einer Telemetrieeigenschaftspeedin Meilen pro Stunde, die eine Validierungserweiterung verwendet, die Grenzwerte für den Wertebereich von 0 bis 100 anwendet.envelope.json: Envelope-Konfiguration, die einen Referenzendpunkt und eine Beispiel-Payload-Ausprägung deklariert.routes.json: Routenbedingungen und Payload-Zuordnungen, die Kilometer pro Stunde in Meilen pro Stunde umrechnen.script.sh: In diesem Beispiel können Sie alle unten aufgeführten OCI-CLI-Befehle speichern, um ein digitales Zwillingsmodell, einen Adapter und Instanzen sowie diecurl-Befehle zur POST-Beispieltelemetrie zu erstellen und dann als Shellskriptscript.shauszuführen.Um die Schritte in diesem Szenario abzuschließen, können Sie die OCI-CLI und die
curl-Befehle erstellen und speichern, die in den folgenden Schritten aufgeführt sind, und dieses Szenario als Shellskript ausführen:script.sh
In diesem Beispiel verwendet das Code-Snippet für das digitale Zwillingsmodell model.json eine benutzerdefinierte Erweiterung dtmi:com:oracle:dtdl:extension:validation;1, die Validierungsregeln für das JSON-Schema für die "Telemetry", "Historized", "Validated", "Velocity"-Elemente anwendet. Wenn die Daten nicht mit den erwarteten Werten übereinstimmen, die in dieser Validierung definiert sind, werden die Daten abgelehnt.
Eine vollständige Liste der unterstützten Validierungseigenschaftsregeln finden Sie unter Referenz zu DTMI Validation Extension.
model.json
{
"@context":[
"dtmi:dtdl:context;3",
"dtmi:dtdl:extension:historization;1",
"dtmi:com:oracle:dtdl:extension:validation;1",
"dtmi:dtdl:extension:quantitativeTypes;1"
],
"@id":"dtmi:com:oracle:iot:poc:testmodel;1",
"@type":"Interface",
"contents":[
{
"@type":[ "Telemetry", "Historized", "Validated", "Velocity" ],
"displayName":"Speed",
"name":"speed",
"schema":"integer",
"unit":"milePerHour",
"minimum":0,
"maximum":100
}
]
}envelope.json
{
"referenceEndpoint": "telemetry/automotive/usa-standard-units",
"referencePayload": {
"dataFormat": "JSON",
"data": {
"speed": 65
}
}
}
routes.json enthält 3 Ausdrücke, die Kilometer transformieren und die Daten-Payload in eine Maßeinheit (Meilen pro Stunde) normalisieren:- Ein Bedingungsausdruck, der die Daten aus dem Endpunkt auswertet:
"condition" : "${endpoint(3) == \"metric-units\"}"Die
${ ... }-Syntax gibt einen Ausdruck an, der den Wert des dritten Endpunktparameters oder Pfadelements in einem API-Aufrufendpoint(3)auswertet. Die Bedingung vergleicht den zurückgegebenen Wert mitmetric-units. Wenn wahr, werden diese Regeln angewendet. - Payload-Zuordnungsausdruck:
"payloadMapping" : { "$.speed": "${(.velocity_kph / 1.609) | floor}"}Die
${ ... }-Syntax gibt einen Ausdruck an. Dieser Ausdruck wertet eine arithmetische Berechnung aus und führt sie aus, um die Geschwindigkeit oder Geschwindigkeit von Kilometern pro Stunde in Meilen pro Stunde zu konvertieren(.velocity_kph / 1.609). Dadurch wird das Feldvelocity_kphdurch1.609dividiert, und die Floor-Funktion wird auf die nächste Ganzzahl abgerundet. Dieser Wert kommt von der Umrechnung von Kilometern auf Meilen, die Kilometer = Meilen × 1,60934 ist, "payloadMapping": {"$.speed": "$.speed"}Dies ist ein Direct Value Mapping-Ausdruck, der den Wert der Geschwindigkeit unverändert übergibt.
[
{
"description" : "Automotive data using metric units (kilometers) that's converted to miles, with a different external key in the digital twin instance",
"condition" : "${endpoint(3) == \"metric-units\"}",
"payloadMapping" : {
"$.speed": "${(.velocity_kph / 1.609) | floor}"
},
"referencePayload" : {
"dataFormat" : "JSON",
"data" : { "velocity_kph": 104 }
}
},
{
"description" : "Auto 1 and Auto 2 use USA standard units, shows speed as is.",
"condition" : "*",
"payloadMapping" : { "$.speed": "$.speed" }
}
]
Schritt 1: Erstellen eines digitalen Zwillingsmodells
Verwenden Sie diesen CLI-Befehl oci iot digital-twin-model create, um ein digitales Zwillingsmodell mit der Datei model.json zu erstellen. Dieses digitale Zwillingsmodell standardisiert speed in Meilen pro Stunde.
Dieser Befehl registriert das digitale Zwillingsmodell mit dieser DTMI-URI dtmi:com:oracle:iot:poc:testmodel;1, wie oben in model.json definiert.
oci iot digital-twin-model create \
--iot-domain-id <iot-domain-ocid> \
--display-name "Test Digital Twin Model" \
--description "Model for testing automotive telemetry routing and unit normalization" \
--spec file://~/model.json
Schritt 2: Erstellen eines digitalen Twin-Adapters mit Umschlag und Routen
Erstellen Sie einen Adapter, der die Spezifikation des digitalen Zwillingsmodells DTMI referenziert und den eingehenden Umschlag und die Routen verwendet, um die eingehende Telemetrie zu normalisieren.
oci iot digital-twin-adapter create \
--iot-domain-id <iot-domain-ocid> \
--display-name "automotive-speed-adapter" \
--description "Routes by units" \
--digital-twin-model-spec-uri "dtmi:com:oracle:iot:poc:testmodel;1" \
--inbound-envelope file://~/envelope.json \
--inbound-routes file://~/routes.json
Die referenceEndpoint in envelope.json ist telemetry/automotive/usa-standard-units. Die Datei routes.json:
- Leitet Anforderungen an das dritte Pfadsegment weiter, das
metric-unitsentspricht, z.B./telemetry/automotive/metric-units, und konvertiert dannvelocity_kphin mph inspeedund legt das Ergebnis fest. - Verwendet eine standardmäßige Catch-All-Bedingung (
*), umspeedunverändert für Automobile zu durchlaufen, die Meilen pro Stunde verwenden.
Schritt 3: Zwei digitale Zwillingsinstanzen erstellen
- Endpunkt für MPH:
https://device-host/telemetry/automotive/usa-standard-units - Endpunkt für km/h:
https://device-host/telemetry/automotive/metric-units
Wenn Sie eine Instanz eines digitalen Zwillings mit Authentifizierung erstellen, können Sie zur Authentifizierung entweder ein Vault Secret oder ein mTLS-Zertifikat verwenden. Aus Sicherheitsgründen ist es eine Best Practice, ein eindeutiges Vault Secret oder ein mTLS-Zertifikat für jede Instanz eines digitalen Zwillings zu erstellen. Alle Ressourcen müssen sich in derselben Region und demselben Mandanten wie alle anderen zugehörigen IoT-Ressourcen befinden.
Wenn Sie ein mTLS-Zertifikat zur Authentifizierung verwenden, müssen Sie den allgemeinen Namen des Zertifikats als externen Schlüssel verwenden: --external-key <common-name-from-certificate-details>. Informationen hierzu finden Sie unter Szenario: Digitale Zwillingsinstanz erstellen, die ein mTLS-Zertifikat verwendet.
Ein Administrator muss die Policy zum Erstellen von Secrets oder Zertifikaten hinzufügen. Informationen hierzu finden Sie in Schritt 3 unter Voraussetzungen.
Digitale Zwillingsinstanz für die USA-Standardeinheiten, Meilen pro Stunde (mph), beachten Sie den externen Schlüssel:
american-auto-standard-unitsoci iot digital-twin-instance create \
--iot-domain-id <IoT-domain-ocid> \
--display-name "auto using miles per hour" \
--external-key american-auto-standard-units \
--digital-twin-adapter-id <same-digital-twin-adapter-ocid> \
--auth-id <secret-ocid-or-certificate-ocid>Digitale Zwillingsinstanz für die europäischen metrischen Einheiten, Kilometer pro Stunde (kph), beachten Sie den externen Schlüssel: european-auto-metric-units
oci iot digital-twin-instance create \
--iot-domain-id <IoT-domain-ocid> \
--display-name "auto using kilometers per hour" \
--external-key european-auto-metric-units \
--digital-twin-adapter-id <same-digital-twin-adapter-ocid> \
--auth-id <secret-ocid-or-certificate-ocid>
Schritt 4: Senden Sie Beispieltelemetrie zur Validierung von Routing und Mapping
Um Telemetrie zu senden, benötigen Sie den externen Schlüssel aus der Antwort der digitalen Zwillingsinstanz aus Schritt 3, das Gerätekennwort und den Gerätehostendpunkt.
Wenn die Instanz des digitalen Zwillings das Vault Secret zur Authentifizierung verwendet, müssen Sie als Basiskodierungs-Secret-Wert mit 64 als Gerätekennwort verwenden.
- Externer Schlüssel: Ersetzen Sie
external-keydurchexternal-keyaus der digitalen Zwillingsinstanz, mit der Sie arbeiten möchten. Um Probleme bei der Angebotserstellung zu vermeiden, sollten Sie keine Anführungszeichen im externen Schlüsselwert verwenden. - Gerätekennwort: Ersetzen Sie das Gerätekennwort durch den Nur-Text-Secret-Inhalt oder das mTLS-Zertifikat.
- Gerätehost: Ersetzen Sie
device-hostdurch den Gerätehost aus der IoT-Domain. Informationen zum Abrufen der Endpunkt-URL des Gerätehosts für die Domain IoT finden Sie unter Details einer IoT-Domain abrufen.
-u "external-key:device-password-secret-contents-or-certificate"
Je nach Betriebssystem oder Anwendung können einige Anwendungen oder Codeeditoren Ihren Werten unerwünschte Anführungszeichen hinzufügen. Dies kann zu einem Fehler führen. Beispiele für Angebote finden Sie unter Fehlerbehebung.
curl -i -X POST \
-u "european-auto-metric-units:device-password-secret-or-certificate" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/metric-units" \
-d '{ "velocity_kph": 0 }'curl -i -X POST \
-u "european-auto-metric-units:device-password-secret-or-certificate" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/metric-units" \
-d '{ "velocity_kph": 110 }'
curl -i -X POST \
-u "american-auto-standard-units:device-password-secret-or-certificate" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/usa-standard-units" \
-d '{ "speed": 0 }'
curl -i -X POST \
-u "american-auto-standard-units:device-password-vault-secret-base-64-or-certificate-OCID" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/usa-standard-units" \
-d '{ "speed": 60 }'
Schritt 5: Normalisierungsverhalten prüfen
Die Routingbedingung ${endpoint(3) == "metric-units"} wertet die Daten aus und wendet die folgende Payload-Zuordnung auf den Datenendpunkt der Metrikeinheiten an:
"$.speed": "${(.velocity_kph / 1.609) | floor}"
Erwartetes Ergebnis:
- Die Zuordnung des Adapters konvertiert Kilometer pro Stunde (kph) in Meilen pro Stunde (mph) und wendet dann die Etage an, um ein Ganzzahlenschema zu erfüllen:
speed_mph = floor(velocity_kph / 1.609) - In diesem Beispiel wird
velocity_kph = 0: speed_mph = floor(0 / 1.609) = floor(0) = 0 mphNach dem Stockwerk wird der Rundungsschritt angezeigt, der das Ergebnis zu einer ganzen Zahl zwingt und auf eine negative Unendlichkeit abrundet. Dies ist erforderlich, wenn Ihr DTDL-Modell die Geschwindigkeitstelemetrie als
schema: "integer"deklariert, sodass der Wert eine Ganzzahl ist, keine Gleitkommazahl oder Zeichenfolge. velocity_kph = 110→speed = floor(110 / 1.609) = 68mph- Standarddatenposts mit
speedwerden unverändert übergeben. Beispiel: Die Werte aus diesem Beispiel:0,60
Wenn die Modellvalidierung minimum: 0, maximum: 100 aktiviert ist, werden Out-of-Range-Werte gemäß den Validierungsregeln abgelehnt.
Verwendet die Konvertierung von Soft-Typen:
- Durchgang (mph, Schema "integer"):
{"speed": "60"}und{"speed": 60.0}werden als60gespeichert.{"speed": "60.2"}wird abgelehnt, es sei denn, Coerces werden einer Ganzzahl zugeordnet (z.B. mitfloor). - Metrikroute (kph → mph):
{"velocity_kph": 110}→68;{"velocity_kph": "110"}→68, da das Mappingflooreine Ganzzahl ausgibt. Behalten Sie arithmetische Eingaben numerisch bei, um Ausdrucksfehler zu vermeiden. Verwenden Sie nach Möglichkeit110gegenüber"110". - Rundung bleibt explizit: Bei der Soft-Konvertierung wird
68.35nicht automatisch in68gerundet. Verwenden Siefloorals Ganzzahlenschema, oder wechseln Sie das Modell zuschema: "double", um Brüche beizubehalten.
Best Practices
- Referenz-JSON-Dateien für Spezifikationen und Adapter für digitale Zwillingsmodelle: Wenn Sie einen Adapter mit der CLI hochladen, können Sie mit JSON-Dateien Datenmapping angeben. In CLI-Befehlen können Sie Dateien als
file://~/name.jsonreferenzieren oder je nach Shellumgebung einen absoluten oder relativen Pfad angeben. Abhängig von Ihrem Betriebssystem können Sie eine etwas andere Syntax mit Anführungszeichen, Schrägstrichen oder dem Speicherort der Datei standardmäßig verwenden. Siehe CLI-Eingabe und -Ausgabe verwalten und JSON-Datei für komplexe Eingaben verwenden. - JSON-Konfigurationsdateien (Envelope, Routen) verwenden API-Feldnamen in
camelCase(Beispiel:referenceEndpoint). Die OCI-CLI übergibt diese Dateien unverändert über die Argumentefile://, sodass die Verwendung von camelCase JSON mit der CLI erwartet und korrekt ist. - Die
referenceEndpointinenvelope.jsonmuss einen typischen Endpunkt für Ihren Adapter widerspiegeln. - Wildcard-Routenbedingung (
*) wird nach bestimmten Bedingungen ausgewertet. Ordnen Sie die Routendefinitionen entsprechend an. - Soft Conversion Scope: Numerische Zeichenfolgen und ganzzahlige Doppelzeichenfolgen werden akzeptiert, wenn sie mit dem Modelltyp übereinstimmen (z.B. Ganzzahl). Casting-Helfer wie
number()undtoIntegerwerden in Routenausdrücken weiterhin nicht unterstützt. Verlassen Sie sich auf arithmetische Werte undfloor, oder übernehmen Sieschema: "double", um Fraktionen beizubehalten.
Variante: schema="double" anstelle von floor verwenden
Diese Variation zeigt, wie sich das Festlegen des Modelleigenschaftsschemas auf double auf die Adapterzuordnung und die aufgezeichneten Werte auswirkt. Bei double akzeptiert der Validator jeden numerischen Integral- oder Bruchteilwert, der den Bereichs-Constraints entspricht, ohne dass automatisch gerundet wird. Sie können die Bruchstellengenauigkeit (Roh) beibehalten oder mit floor auf ganze Zahlen zwingen. Beide übergeben die Validierung, solange die Werte im definierten Bereich verbleiben.
Was bewirkt die schema=double-Validierung?
- Typannahme: Akzeptiert JSON-Zahlen mit oder ohne Bruchteilen. Beispiel: 60, 68.35. Zeichenfolgen wie
"68"bleiben ungültig. - Bereich: Mindest- und Höchstwert. Beispiel: In diesem Beispiel wird
0–100durchgesetzt. - Keine automatische Rundung: Die IoT-Plattform rundet keine Werte. Sie steuern die Rundung in der Zuordnung des digitalen Zwillingsadapters oder den Downstream mit APEX oder SQL, je nachdem, welche Systeme zur Anzeige Ihrer Daten konfiguriert sind.
In dieser Variante verwendete Dateien:
model_double.json: DTDL-Modell mitschema: "double".{ "@context": [ "dtmi:dtdl:context;3", "dtmi:dtdl:extension:historization;1", "dtmi:com:oracle:dtdl:extension:validation;1", "dtmi:dtdl:extension:quantitativeTypes;1" ], "@id": "dtmi:com:oracle:iot:poc:testmodeldouble;1", "@type": "Interface", "contents": [ { "@type": [ "Telemetry", "Historized", "Validated", "Velocity" ], "displayName": "Speed", "name": "speed", "schema": "double", "unit": "milePerHour", "minimum": 0, "maximum": 100 } ] }routes_double_raw.json: Beim Mapping wird die fraktionale Genauigkeit beibehalten:"$.speed": "${.velocity_kph / 1.609}".[ { "description": "Double model: European metric units to miles per hour (mph); preserving fractional precision (no floor).", "condition": "${endpoint(3) == \"metric-units\"}", "payloadMapping": { "$.speed": "${.velocity_kph / 1.609}" }, "referencePayload": { "dataFormat": "JSON", "data": { "velocity_kph": 110 } } }, { "description": "Double model: USA standard units passthrough.", "condition": "*", "payloadMapping": { "$.speed": "$.speed" } } ]routes_double_floor.json: Mapping-Coerces zu ganzzahliger mph:"$.speed": "${(.velocity_kph / 1.609) | floor}"als Double gespeichert.[ { "description": "Double model: European metric units to miles per hour (mph); floor to whole number (stored as double).", "condition": "${endpoint(3) == \"metric-units\"}", "payloadMapping": { "$.speed": "${(.velocity_kph / 1.609) | floor}" }, "referencePayload": { "dataFormat": "JSON", "data": { "velocity_kph": 110 } } }, { "description": "Double model: USA standard units passthrough.", "condition": "*", "payloadMapping": { "$.speed": "$.speed" } } ]
Schritt A: Erstellen Sie das digitale Zwillingsmodell mit Doppel
oci iot digital-twin-model create \
--iot-domain-id iot-domain-ocid \
--display-name "TestModelSpeedDouble" \
--spec file://model_double.json
Schritt B: Erstellen Sie zwei Adapter, die dem Doppelmodell zugeordnet sind
Verwenden Sie Rohwerte, um die Nachkommastellen für Bruchteile beizubehalten:
oci iot digital-twin-adapter create \
--iot-domain-id iot-domain-ocid \
--display-name "auto-adapter-double-raw" \
--digital-twin-model-id double-model-ocid \
--inbound-envelope file://envelope.json \
--inbound-routes file://routes_double_raw.json
Floor verwendet eine ganze Zahl als MPH, das ist ein Double:
oci iot digital-twin-adapter create \
--iot-domain-id iot-domain-ocid \
--display-name "auto-adapter-double-floor" \
--digital-twin-model-id double-model-ocid \
--inbound-envelope file://envelope.json \
--inbound-routes file://routes_double_floor.json
Schritt C: Erstellen Sie digitale Zwillingsinstanzen für jeden Adapter
oci iot digital-twin-instance create \
--iot-domain-id iot-domain-ocid \
--display-name "american-auto-raw" \
--external-key american-auto-raw \
--digital-twin-adapter-id adapter-double-raw-ocid \
--auth-id vault-secret-ocid
oci iot digital-twin-instance create \
--iot-domain-id iot-domain-ocid \
--display-name "european-auto-raw" \
--external-key european-auto-raw \
--digital-twin-adapter-id adapter-double-raw-ocid \
--auth-id vault-secret-ocid
oci iot digital-twin-instance create \
--iot-domain-id iot-domain-ocid \
--display-name "american-auto-dfloor" \
--external-key american-auto-dfloor \
--digital-twin-adapter-id adapter-double-floor-ocid \
--auth-id vault-secret-ocid
oci iot digital-twin-instance create \
--iot-domain-id iot-domain-ocid \
--display-name "european-auto-dfloor" \
--external-key european-auto-dfloor \
--digital-twin-adapter-id adapter-double-floor-ocid \
--auth-id vault-secret-ocid
Schritt D: Posten Sie Beispieltelemetrie und vergleichen Sie Ergebnisse
-u "external-key:device-password" \- Wenn der digitale Zwilling zur Authentifizierung Vault Secret verwendet, verwenden Sie
base64-secretals Gerätekennwort. - Wenn die Instanz des digitalen Zwillings eine mLTS-Zertifizierung verwendet, verwenden Sie
certificate-ocidals Gerätekennwort.
RAW-Werte (double, no floor):
curl -i -X POST \
-u "american-auto-raw:device-password" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/usa-standard-units" \
-d '{ "speed": 60 }'
curl -i -X POST \
-u "european-auto-raw:device-password" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/metric-units" \
-d '{ "velocity_kph": 110 }'
Erwartetes Ergebnis: Der zweite Beitrag erzeugt ca. 68.35… mph (fraktional) und wird akzeptiert, da schema=double Bruchzahlen innerhalb des Bereichs akzeptiert.
Boden (Doppelzimmer, mit Boden):
curl -i -X POST \
-u "american-auto-dfloor:device-password" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/usa-standard-units" \
-d '{ "speed": 60 }'
curl -i -X POST \
-u "european-auto-dfloor:device-password" \
-H "Content-Type: application/json" \
"https://device-host/telemetry/automotive/metric-units" \
-d '{ "velocity_kph": 110 }'
Erwartetes Ergebnis: Der zweite Beitrag erzeugt 68 eine ganzzahlige Zahl und ist akzeptiert. Der Wert wird als Double-Wert gespeichert, z.B. 68.0, obwohl er eine Ganzzahl ist.
Hinweise zu Benutzernamenangeboten und nachgelagerten Auswirkungen
- Externer Schlüssel entspricht Authentifizierungsbenutzernamen: Wenn eine digitale Zwillingsinstanz mit Anführungszeichen im externen Schlüsselwert erstellt wird, z.B.
"\"american-auto-standard-units\"", muss der Basisauthentifizierungsbenutzername in dercurl-Anforderung die Anführungszeichen enthalten, oder es tritt eine Unstimmigkeit auf und führt zu einem401 Unauthorized-Fehler. Um Probleme bei der Angebotserstellung zu vermeiden, sollten Sie in Ihrem externen Schlüsselwert keine Anführungszeichen verwenden, wie in den Beispielen in diesem Szenario. - Downstream in APEX oder mit SQL: Mit
schema=doublewerden fraktionierte MPH-Werte beibehalten. Wenn Sie Ganzzahlen in Berichten benötigen, wenden SieFLOORundROUNDin SQL an. Beispiel:SELECT FLOOR(speed) FROM …. Stellen Sie mitschema=integersicher, dass das Mapping beispielsweise Integralwerte ausgibt, indem Siefloorverwenden, um die Ganzzahltypierung zu erfüllen. - Ausdrucksunterstützung:
inbound-routeakzeptiert arithmetische Werte undfloor. Funktionen wietoIntegerodernumberwurden abgelehnt und werden nicht unterstützt. Verwenden Siefloor, oder übernehmen Sieschema: "double"für die partielle Annahme.