Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa pagina include istruzioni per la gestione dei componenti Azure IoT Operations usando i manifesti di distribuzione kubernetes, disponibile in ANTEPRIMA. Questa funzionalità viene fornita con diverse limitazioni e non deve essere usata per i carichi di lavoro di produzione.
Consultare i Termini supplementari di utilizzo per le anteprime di Microsoft Azure per i termini legali applicabili alle funzionalità di Azure in versione beta, anteprima o non ancora rilasciate in versione generale.
Una trasformazione mappa accetta ogni messaggio in arrivo e genera un messaggio di output basato sulle tue regole. È possibile rinominare i campi, riorganizzarli in nuove strutture, calcolare i valori derivati o rimuovere campi indesiderati. Le regole con caratteri jolly consentono di copiare tutti i campi contemporaneamente.
Per una panoramica dei grafici del flusso di dati e della composizione delle trasformazioni in una pipeline, vedere Panoramica dei grafici del flusso di dati.
Prerequisiti
- Istanza di Azure IoT Operations distribuita in un cluster Kubernetes abilitato per Arc. Per altre informazioni, vedere Deploy Azure IoT Operations.
- Un endpoint del Registro di sistema predefinito denominato
defaultche punta amcr.microsoft.comviene creato automaticamente durante la distribuzione. Le trasformazioni predefinite usano questo endpoint.
Funzionamento delle regole della mappa
Ogni regola della mappa ha quattro parti:
| Proprietà | Obbligatorio | Descrizione |
|---|---|---|
inputs |
Sì | Elenco dei percorsi dei campi da leggere dal messaggio in arrivo. |
output |
Sì | Percorso del campo in cui il risultato viene scritto nel messaggio di output. |
expression |
No | Formula applicata ai valori di input. Se omesso, il primo valore di input viene copiato direttamente. |
description |
No | Etichetta leggibile dall'uomo per la regola, inclusa nei messaggi di errore. |
Gli input vengono assegnate variabili posizionali in base all'ordine: il primo input è $1, il secondo è $2e così via. Usare queste variabili in expression.
Rinominare un campo
Per rinominare BirthDate in DateOfBirth, associare un input a un percorso di output diverso. Non è necessaria alcuna espressione. Il valore viene copiato come tale.
Nella configurazione della trasformazione mappa aggiungere una regola:
| Impostazione | Valore |
|---|---|
| Inserimento | BirthDate |
| Risultato | DateOfBirth |
Ristrutturare i campi
Usare la notazione a punto nel percorso di output per spostare i campi in una struttura nidificata.
Aggiungere due regole:
| Inserimento | Risultato |
|---|---|
Name |
Employee.Name |
BirthDate |
Employee.DateOfBirth |
Dato questo input:
{
"Name": "Grace Owens",
"BirthDate": "19840202",
"Position": "Analyst"
}
Queste due regole producono:
{
"Employee": {
"Name": "Grace Owens",
"DateOfBirth": "19840202"
}
}
Nel risultato vengono visualizzati solo i campi elencati nell'output di una regola. Il campo Position non è incluso perché nessuna regola lo mappa.
Combinare più input
Quando si elencano più input, le relative variabili posizionali consentono di unirle in un'espressione.
Aggiungi una regola:
| Impostazione | Valore |
|---|---|
| Inputs |
Position, Office |
| Risultato | Employment.Position |
| Expression | $1 + ", " + $2 |
Dato Position: "Analyst" e Office: "Kent, WA", l'output è "Analyst, Kent, WA".
Trasformare i valori con espressioni
Usare il expression campo per applicare funzioni predefinite o aritmetiche.
Aggiungere una regola di calcolo. Ad esempio, per convertire Celsius in Fahrenheit:
| Impostazione | Valore |
|---|---|
| Inserimento | temperature |
| Risultato | temperature_f |
| Expression | cToF($1) |
Per ridimensionare la lettura di un sensore in un intervallo compreso tra 0 e 100, usare l'espressione scale($1, 0, 4095, 0, 100).
Per l'elenco completo di operatori, funzioni e funzionalità avanzate, vedere Riferimenti alle espressioni.
Copia tutti i campi con caratteri jolly
Quando l'output deve corrispondere strettamente all'input con solo alcune modifiche, usare una regola jolly per copiare ogni campo in una volta sola. Aggiungere quindi regole per eseguire l'override, aggiungere o rimuovere campi specifici.
Aggiungere una regola pass-through che copia tutti i campi. Impostare l'input su * e l'output su *.
Requisiti delle regole con caratteri jolly
- Una regola con caratteri jolly deve essere la prima regola nella configurazione della mappa.
- Per ogni trasformazione della mappa è consentita una sola regola con caratteri jolly.
- L'asterisco corrisponde a uno o più segmenti di percorso e deve rappresentare un segmento completo. I modelli come
partial*non sono supportati.
Caratteri jolly con prefisso
È possibile definire l'ambito del carattere jolly con un prefisso specifico. Per appianare tutti i campi dal ColorProperties fino al livello radice.
Aggiungere una regola con input ColorProperties.* e output *.
Dedito:
{
"ColorProperties": {
"Hue": "blue",
"Saturation": "90%",
"Brightness": "50%"
}
}
L'output è il seguente:
{
"Hue": "blue",
"Saturation": "90%",
"Brightness": "50%"
}
Rimuovere i campi dall'output
Impostare output su una stringa vuota per escludere campi specifici. Questo approccio viene in genere usato dopo una regola con wildcard: copiare tutto, quindi rimuovere ciò che non è necessario.
- Aggiungere una regola pass-through per copiare tutti i campi.
- Aggiungere una regola di rimozione e selezionare i campi da escludere , ad esempio
passwordeinternal_id.
Nessuna espressione consentita in una regola di rimozione.
Sovrascrivere i caratteri jolly per campi specifici
Quando una regola con carattere jolly e una regola specifica corrispondono entrambe allo stesso campo, la regola più specifica ha la precedenza.
- Aggiungere una regola pass-through per copiare tutti i campi.
- Aggiungere una regola di calcolo per
temperaturecon l'espressionecToF($1).
La trasformazione della mappa applica la regola specifica a temperature e copia tutti gli altri campi così com'è.
Usare i campi dei metadati
È possibile leggere e scrivere nei metadati dei messaggi, ad esempio argomenti MQTT e proprietà utente. Vedere Campi dei metadati nel riferimento delle espressioni.
Aggiungere una regola con input region e output $metadata.user_property.region per scrivere un valore di campo in una proprietà utente MQTT.
Per un esempio completo del routing di argomenti dinamici, vedere Instradare i messaggi a diversi argomenti.
Usare l'ultimo valore noto e le impostazioni predefinite
Quando i dati del sensore arrivano in modo intermittente, è possibile compilare i campi mancanti con l'ultimo valore noto o un valore predefinito statico. Vedere Last known value (Ultimo valore noto ) e Default values (Valori predefiniti ) nel riferimento alle espressioni.
Aggiungere una regola per il temperature campo e abilitare Ultimo valore noto. Impostare un valore predefinito di 0 come fallback.
Questa regola usa il valore corrente quando presente, esegue il fallback all'ultimo valore noto e usa 0 se nessuno dei due è disponibile.
Arricchire con dati esterni
È possibile aumentare i messaggi con i dati di un archivio stati esterno configurando i set di dati. Ad esempio, cercare i metadati di un dispositivo in base al relativo ID e includerlo nell'output. Per informazioni dettagliate, vedere Arricchire con dati esterni.
Funzionalità esclusive del grafico del flusso di dati
I grafici del flusso di dati supportano diverse funzionalità che non sono disponibili nei mapping dei flussi builtInTransformation di dati.
Valori predefiniti per i campi mancanti
Usare la sintassi ?? <default> su un input per fornire un fallback statico quando manca un campo. Questa operazione è più semplice rispetto alla scrittura di un'espressione if per verificare la presenza di valori vuoti.
Nella configurazione della trasformazione della mappa, impostare l'input includendo la sintassi ??, seguita dal valore predefinito. Ad esempio, immettere temperature ?? 0 come campo di input per utilizzare 0 quando manca il campo relativo alla temperatura.
Per informazioni dettagliate sui tipi predefiniti supportati e sulla combinazione di valori predefiniti con gli ultimi valori noti, vedere Valori predefiniti nel riferimento alle espressioni.
Funzioni regex
I grafici del flusso di dati supportano la corrispondenza e la sostituzione delle espressioni regolari:
-
str::regex_matches(string, pattern): restituisce true se la stringa corrisponde al criterio regex. -
str::regex_replace(string, pattern, replacement): sostituisce tutte le corrispondenze regex con la stringa di sostituzione.
Queste funzioni sono utili nelle espressioni di filtro o per la pulizia e la trasformazione dei dati stringa. Per l'elenco completo delle funzioni stringa, vedere Funzioni stringa nelle informazioni di riferimento sulle espressioni.
Esempio di configurazione completa
Ecco una configurazione mappa completa che copia tutti i campi, rimuove i dati sensibili, ristruttura un campo e calcola un valore derivato:
Nell'esperienza Operativa, crea un grafico del flusso di dati e aggiungi una trasformazione mappa. Nel pannello di configurazione della mappa aggiungere regole a:
- Copiare tutti i campi con un pass-through con caratteri jolly.
-
Rimuovere i campi sensibili impostando l'output su vuoto per
passwordesecret_key. -
Ristrutturare il
BirthDatecampo inEmployee.DateOfBirth. -
Calcolare una conversione Fahrenheit usando la formula
cToF($1)neltemperaturecampo. -
Unire il
Positione ilOfficecon la formula$1 + ", " + $2.