Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W Operacje Azure IoT transformacja mapy bierze każdą przychodzącą wiadomość z grafu przepływu danych i generuje komunikat wyjściowy oparty na twoich regułach. Możesz zmieniać nazwy pól, reorganizować je w nowe struktury, obliczać wartości pochodne lub usuwać niechciane pola. Korzystając z reguł dzikich, możesz kopiować wszystkie pola jednocześnie.
Aby zapoznać się z omówieniem wykresów przepływu danych i sposobem tworzenia przekształceń w potoku, zobacz Omówienie wykresów przepływu danych.
Transformacje wykorzystują język wyrażeń do obliczania wartości, warunków testowych i pól odniesienia. Wyrażenia odnoszą się do wejść według położenia, a nie nazwy: pierwsze wejście w inputs liście to $1, drugie to $2, i tak dalej. Wbudowane funkcje, takie jak cToF, konwertują i modyfikują te wartości.
Pełną listę operatorów, funkcji, typów danych i pól metadanych można znaleźć w sekcji Expressions.
Wymagania wstępne
- Instancja usługi Operacje Azure IoT wdrożona w klastrze Kubernetes. Aby uzyskać więcej informacji, zobacz Deploy Operacje Azure IoT.
- Domyślny punkt końcowy rejestru o nazwie
default, który wskazuje namcr.microsoft.com, jest tworzony automatycznie podczas wdrażania. Wbudowane przekształcenia używają tego punktu końcowego.
Azure CLI przykładów w tym artykule używa zmiennych środowiskowych, dzięki czemu można ustawić każdą wartość raz, a następnie skopiować i wkleić polecenia as-is. Jeśli korzystasz ze środowiska Operacje Azure IoT Codespaces z quickstartu, te zmienne są już ustawione i możesz pominąć ten krok. W przeciwnym razie ustaw następujące zmienne środowiskowe w swojej poskoczce przed uruchomieniem poleceń.
Poniższe skrypty określają najczęściej używane zmienne środowiskowe:
| Zmienna środowiskowa | Opis |
|---|---|
SUBSCRIPTION_ID |
ID subskrypcji zawierającej Twoją instancję Operacje Azure IoT. |
RESOURCE_GROUP |
Nazwa grupy zasobów zawierającej Twoją instancję Operacje Azure IoT. |
AIO_INSTANCE_NAME |
Nazwa Twojej instancji Operacje Azure IoT. Aby wypisać swoje instancje, uruchom az iot ops list -o table. |
CLUSTER_NAME |
Nazwa klastra Kubernetes z włączonym Azure Arc, który hostuje Twoją instancję. |
LOCATION |
Region Azure do wykorzystania dla nowych zasobów, na przykład eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Wystarczy ustawić zmienne, których używa ten artykuł. W tym artykule może być użytych dodatkowych zmiennych środowiskowych do wyboru nazw zasobów. Artykuł wyjaśnia, jak ustawić je tam, gdzie są wprowadzane.
Jak działają reguły mapy
Każda reguła mapy ma cztery części:
| Majątek | Wymagane | Opis |
|---|---|---|
inputs |
Yes | Lista ścieżek pól do odczytu z przychodzącej wiadomości. |
output |
Yes | Ścieżka pola, gdzie wynik pojawia się w wiadomości wyjściowej. |
expression |
Nie. | Formuła zastosowana do wartości wejściowych. Jeśli ją pominiesz, pierwsza wartość wejściowa kopiuje się bezpośrednio. |
description |
Nie. | Czytelna dla człowieka etykieta reguły zawarta w komunikatach o błędach. |
Transformacja mapowania przypisuje zmienne pozycyjne do wejść w kolejności. Na przykład, jeśli inputs to ['Position', 'Office'], wówczas $1 ma wartość Position, a $2 ma wartość Office.
Zmienianie nazwy pola
Aby zmienić nazwę BirthDate na DateOfBirth, przyporządkuj jedno wejście do innej ścieżki wyjściowej. Nie potrzebujesz wyrażenia. Wartość jest kopiowana bez zmian.
W konfiguracji przekształcania mapy dodaj regułę:
| Setting | Wartość |
|---|---|
| Dane wejściowe | BirthDate |
| Wynik | DateOfBirth |
Przebuduj pola
Użyj notacji kropkowej w ścieżce wyjściowej, aby przenieść pola do struktury zagnieżdżonej.
Dodaj dwie reguły:
| Dane wejściowe | Wynik |
|---|---|
Name |
Employee.Name |
BirthDate |
Employee.DateOfBirth |
Biorąc pod uwagę te dane wejściowe:
{
"Name": "Grace Owens",
"BirthDate": "19840202",
"Position": "Analyst"
}
Te dwie reguły tworzą:
{
"Employee": {
"Name": "Grace Owens",
"DateOfBirth": "19840202"
}
}
W wyniku są wyświetlane tylko pola wymienione w danych wyjściowych reguły. Wynik nie obejmuje Position pola, ponieważ żadna reguła go nie odwzorowuje.
Łączenie wielu danych wejściowych
Gdy wypisujesz wiele wejść, użyj ich zmiennych pozycyjnych, aby połączyć je w wyrażenie.
Dodawanie reguły:
| Setting | Wartość |
|---|---|
| Wejścia |
Position, Office |
| Wynik | Employment.Position |
| Wyrażenie | $1 + ", " + $2 |
Biorąc pod uwagę Position: "Analyst" i Office: "Kent, WA", wynikiem jest "Analyst, Kent, WA".
Przekształcanie wartości za pomocą wyrażeń
Użyj pola expression, aby zastosować wbudowane funkcje lub operacje arytmetyczne. Poniższy przykład wykorzystuje cToF, wbudowaną funkcję konwersji jednostkowej, która przekształca wartość Celsjusza na Fahrenheita. Pamiętaj, że odnosi się to $1 do pierwszego wejścia, a nie do nazwy pola.
Pełną listę operatorów, funkcji i zaawansowanych cech można znaleźć w sekcji Expressions. Grupy referencyjne funkcjonują według kategorii, takich jak konwersja jednostek, skalowanie i zaokrąglanie, matematyka oraz funkcje ciągów znaków.
Dodaj regułę obliczeniową. Na przykład aby przekonwertować stopnie Celsjusza na Fahrenheit:
| Setting | Wartość |
|---|---|
| Dane wejściowe | temperature |
| Wynik | temperature_f |
| Wyrażenie | cToF($1) |
Aby skalować odczyt czujnika do zakresu od 0 do 100, użyj wyrażenia scale($1, 0, 4095, 0, 100).
Skopiuj wszystkie pola z symbolami wieloznacznymi
Gdy dane wyjściowe powinny być dokładnie zgodne z danymi wejściowymi tylko z kilkoma zmianami, użyj reguły z symbolami wieloznacznymi, aby skopiować każde pole jednocześnie. Następnie dodaj reguły, aby zastąpić, dodać lub usunąć określone pola.
Dodaj regułę przekazywania, która kopiuje wszystkie pola. Ustaw dane wejściowe na * , a dane wyjściowe na *.
Wymagania dotyczące reguł z symbolami wieloznacznymi
- Reguła z symbolami wieloznacznymi musi być pierwszą regułą w konfiguracji twojej mapy.
- Transformacja mapy obsługuje tylko jedną regułę dzikiej karty.
- Gwiazdka pasuje do co najmniej jednego segmentu ścieżki i musi reprezentować kompletny segment. Transformacja mapy nie obsługuje częściowych wzorców takich jak
partial*.
Symbole wieloznaczne prefiksu
Skieruj dziką kartę do konkretnego prefiksu. Aby spłaszczyć wszystkie pola z ColorProperties do poziomu głównego:
Dodaj regułę z danymi wejściowymi ColorProperties.* i wyjściowymi *.
Dane:
{
"ColorProperties": {
"Hue": "blue",
"Saturation": "90%",
"Brightness": "50%"
}
}
Dane wyjściowe to:
{
"Hue": "blue",
"Saturation": "90%",
"Brightness": "50%"
}
Usuwanie pól z danych wyjściowych
output Ustaw wartość na pusty ciąg, aby wykluczyć określone pola. Zazwyczaj stosuje się takie podejście po zasadzie dzikiej karty: skopiuj wszystko, a potem usuń to, czego nie potrzebujesz.
- Dodaj regułę przekazywania, aby skopiować wszystkie pola.
- Dodaj regułę usuwania i wybierz pola do wykluczenia (na przykład
passwordiinternal_id).
Reguła usuwania nie może zawierać wyrażenia.
Zastępowanie symboli wieloznacznych dla określonych pól
Gdy reguła z symbolem wieloznacznym i konkretna reguła odnoszą się do tego samego pola, bardziej szczegółowa reguła ma pierwszeństwo.
- Dodaj regułę przekazywania, aby skopiować wszystkie pola.
- Dodaj regułę obliczeniową dla
temperaturez wyrażeniemcToF($1).
Przekształcenie mapy stosuje konkretną regułę do temperature i kopiuje wszystkie inne pola bez zmian.
Używanie pól metadanych
Czytaj i zapisuj do metadanych wiadomości, takich jak tematy MQTT i właściwości użytkownika. Zobacz Pola metadanych w odniesieniu do wyrażeń.
Dodaj regułę z danymi wejściowymi region i wyjściowymi $metadata.user_property.region , aby zapisać wartość pola we właściwości użytkownika MQTT.
Pełny przykład dynamicznego routingu tematów można znaleźć w temacie Kierowanie komunikatów do różnych tematów.
Użyj ostatniej znanej wartości i wartości domyślnych
Gdy dane czujnika docierają sporadycznie, możesz wypełnić brakujące pola ostatnią znaną wartością lub wartością statyczną. Zobacz Ostatnie znane wartości i Wartości domyślne w dokumentacji wyrażeń.
Dodaj regułę dla temperature pola i włącz ostatnią znaną wartość. Ustaw wartość 0 domyślną jako rezerwową.
Ta reguła używa bieżącej wartości, jeśli jest dostępna, w przeciwnym razie wraca do ostatniej znanej wartości i używa 0, jeśli żadna z powyższych nie jest dostępna.
Wzbogacanie przy użyciu danych zewnętrznych
Wzbogacenie jest opcjonalne. Potrzebujesz go tylko wtedy, gdy chcesz łączyć wiadomości przychodzące z danymi referencyjnymi przechowywanymi w magazynie stanów, na przykład tabelą metadanych urządzeń. Jeśli Twoje wiadomości zawierają już wszystko, czego potrzebujesz, pomiń tę sekcję.
Gdy potrzebujesz wzbogacenia, skonfiguruj zbiór danych do kontekstualizacji, który środowisko uruchomieniowe wyszukuje podczas przetwarzania. Na przykład wyszukaj metadane urządzenia według jego identyfikatora i uwzględnij je w danych wyjściowych. Aby uzyskać szczegółowe informacje, zobacz Wzbogacanie o dane zewnętrzne.
Funkcje wyłączne grafu przepływu danych
Wykresy przepływu danych obsługują kilka funkcji, które nie są dostępne w mapowaniach przepływu builtInTransformation danych.
Wartości domyślne brakujących pól
Użyj składni ?? <default> na danych wejściowych, aby zapewnić statyczne rozwiązanie zapasowe, gdy brakuje pola. Jest to prostsze niż pisanie if wyrażenia w celu sprawdzenia pustych wartości.
W konfiguracji przekształcania mapy ustaw dane wejściowe, aby zawierały składnię ??, po czym następuje wartość domyślna. Na przykład wprowadź temperature ?? 0 w polu wejściowym do użycia 0 w przypadku braku pola temperatury.
Aby uzyskać szczegółowe informacje na temat obsługiwanych typów domyślnych i łączenia wartości domyślnych z ostatnimi znanymi wartościami, zobacz Domyślne wartości w dokumentacji wyrażeń.
Funkcje wyrażeń regularnych
Wykresy przepływu danych obsługują dopasowywanie i zastępowanie wyrażeń regularnych:
-
str::regex_matches(string, pattern): zwraca wartość true, jeśli ciąg pasuje do wzorca wyrażenia regularnego. -
str::regex_replace(string, pattern, replacement): zastępuje wszystkie dopasowania wyrażeń regularnych ciągiem zastępczym.
Te funkcje są przydatne w wyrażeniach filtrów lub do czyszczenia i przekształcania danych ciągów. Aby uzyskać pełną listę funkcji ciągów, zobacz Funkcje ciągów w dokumentacji wyrażeń.
Pełny przykład konfiguracji
Oto kompletna konfiguracja mapy, która kopiuje wszystkie pola, usuwa poufne dane, zmienia strukturę pola i oblicza wartość pochodną:
W środowisku Operacji utwórz graf przepływu danych i dodaj transformację mapy. Na panelu konfiguracji mapy dodaj reguły do:
- Skopiuj wszystkie pola z przekazywaniem z symbolami wieloznacznymi.
-
Usuń poufne pola , ustawiając dane wyjściowe na puste dla
passwordisecret_key. -
Zmień strukturę
BirthDatepola naEmployee.DateOfBirth. -
Oblicz konwersję Fahrenheita, używając wzoru
cToF($1)natemperaturepolu. -
Scal pola
PositioniOfficez formułą$1 + ", " + $2.