Udostępnij za pośrednictwem


Przekształcanie danych w potoku procesora danych

Ważne

Usługa Azure IoT Operations Preview — włączona przez usługę Azure Arc jest obecnie dostępna w wersji zapoznawczej. Nie należy używać tego oprogramowania w wersji zapoznawczej w środowiskach produkcyjnych.

Po udostępnieniu ogólnie dostępnej wersji należy wdrożyć nową instalację operacji usługi Azure IoT. Nie będzie można uaktualnić instalacji w wersji zapoznawczej.

Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.

Etap przekształcania umożliwia przeprowadzanie przekształceń strukturalnych komunikatów w potoku, takich jak:

  • Zmienianie nazw tagów i właściwości
  • Usuwanie danych
  • Dodawanie nowych właściwości
  • Dodawanie wartości obliczeniowych

Etap przekształcania używa narzędzia jq do obsługi przekształcania danych:

  • Każda partycja potoku przekształca komunikaty niezależnie od siebie.
  • Etap generuje przekształcony komunikat na podstawie podanego wyrażenia jq.
  • Utwórz wyrażenie jq, aby przekształcić komunikat na podstawie struktury przychodzącego komunikatu na etapie.

Wymagania wstępne

Aby skonfigurować i użyć etapu potoku przekształcania, potrzebne są następujące elementy:

  • Wdrożone wystąpienie procesora danych, które zawiera opcjonalny składnik procesora danych.
  • Zrozumienie wyrażeń jq.

Konfigurowanie etapu

Konfiguracja JSON etapu transformacji definiuje szczegóły etapu. Aby utworzyć etap, możesz wchodzić w interakcje z interfejsem użytkownika opartym na formularzach lub podać konfigurację JSON na karcie Zaawansowane :

Nazwa/nazwisko Wartość Wymagania Przykład
Nazwisko Nazwa wyświetlana w interfejsie użytkownika procesora danych. Tak Transform1
opis Przyjazny dla użytkownika opis tego, co robi etap transformacji. Nie. Rename Tags
Query Wyrażenie jq przekształcenia. Tak .payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)

Przykładowa konfiguracja

Poniższy przykład przekształcenia konwertuje tablicę tagów w komunikacie wejściowym na obiekt zawierający wszystkie tagi i ich wartości:

{
    "displayName": "TransformInput", 
    "description": "Make array of tags into one object", 
    "query": ".payload.values |= (map({(.tag): (.numVal // .boolVal)}) | add)"
}

Dane wyjściowe z etapu przekształcania wyglądają jak w poniższym przykładzie:

{
  "systemProperties": {
    "partitionKey": "foo",
    "partitionId": 5,
    "timestamp": "2023-01-11T10:02:07Z"
  },
  "qos": 1,
  "topic": "/assets/foo/tags/bar",
  "properties": {
    "responseTopic": "outputs/foo/tags/bar",
    "contentType": "application/json",
    "payloadFormat": 1,
    "correlationData": "base64::Zm9v",
    "messageExpiry": 412
  },
  "userProperties": [
    {
      "key": "prop1",
      "value": "value1"
    },
    {
      "key": "prop2",
      "value": "value2"
    }
  ],
  "payload": {
    "values": {
      "temperature": 250,
      "pressure": 30,
      "humidity": 10,
      "runningStatus": true
    }
  }
}