Adatok leképezése adatfolyamok használatával

Jótanács

Az adatfolyam-grafikonok kibővített leképezési nyelvet kínálnak további függvényekkel, összeállítható átalakításokkal és olyan funkciókkal, mint a feltételes útválasztás és az időalapú összesítés. Az MQTT-, Kafka- vagy OpenTelemetry-végpontokat használó új projektek esetében lásd: Adatok átalakítása térképpel adatfolyam-grafikonokon.

Az adatfolyam-leképezési nyelv használatával alakíthatja át az adatokat az Azure IoT műveletekben. A szintaxis egy egyszerű, mégis hatékony módszer az adatok egyik formátumból a másikba való átalakítását lehetővé tevő leképezések meghatározására. Ez a cikk áttekintést nyújt az adatfolyam-leképezés nyelvéről és a legfontosabb fogalmakról.

A leképezés lehetővé teszi az adatok átalakítását egyik formátumból a másikba. Vegye figyelembe a következő bemeneti rekordot:

{
  "Name": "Grace Owens",
  "Place of birth": "London, TX",
  "Birth Date": "19840202",
  "Start Date": "20180812",
  "Position": "Analyst",
  "Office": "Kent, WA"
}

Hasonlítsa össze a kimeneti rekorddal:

{
  "Employee": {
    "Name": "Grace Owens",
    "Date of Birth": "19840202"
  },
  "Employment": {
    "Start Date": "20180812",
    "Position": "Analyst, Kent, WA",
    "Base Salary": 78000
  }
}

A kimeneti rekordban a bemeneti rekord adatai a következő változtatásokon mennek keresztül:

  • Átnevezett mezők: A Birth Date mező most már Date of Birth.
  • A mezők átstrukturáltak: Mindkettő Name , és Date of Birth az új Employee kategória alá vannak csoportosítva.
  • Mező törölve: A Place of birth mező el lesz távolítva, mert nem szerepel a kimenetben.
  • Mező hozzáadva: A Base Salary mező egy új mező a Employment kategóriában.
  • A mezőértékek módosultak vagy egyesültek: A Position kimenet mezője egyesíti a Position bemenet és Office a mezők értékét.

Az átalakítások leképezéssel érhetők el, amelyek általában a következőket foglalják magukban:

  • Bemeneti definíció: A használt bemeneti rekordok mezőinek azonosítása.
  • Kimeneti definíció: Annak megadása, hogy a bemeneti mezők hol és hogyan vannak rendszerezve a kimeneti rekordokban.
  • Átalakítás (nem kötelező): A bemeneti mezők módosítása a kimeneti mezőkhöz való igazításhoz. expression akkor szükséges, ha több bemeneti mezőt egyesít egyetlen kimeneti mezővel.

A következő leképezés egy példa:

{
  inputs: [
    'Birth Date'
  ]
  output: 'Employee.Date of Birth'
}
{
  inputs: [
    'Position'  // - - - - $1
    'Office'    // - - - - $2
  ]
  output: 'Employment.Position'
  expression: '$1 + ", " + $2'
}
{
  inputs: [
    '$context(position).BaseSalary'
  ]
  output: 'Employment.BaseSalary'
}

A példa térképek:

  • Egy-az-egyhez leképezés: Birth Date közvetlenül leképezve van Employee.Date of Birth átalakítás nélkül.
  • : és egyetlen mezőbe egyesül. A konvertálási képlet ($1 + ", " + $2) formázott sztringbe egyesíti ezeket a mezőket.
  • Környezetfüggő adatok: BaseSalary egy környezetfüggő adatkészletből lesz hozzáadva position.

Mezőhivatkozások

A mezőhivatkozások megmutatják, hogyan adhat meg elérési utakat a bemenetben és a kimenetben pontnotáció, például a Employee.Date of Birth használatával, vagy hogyan érhetőek el az adatok egy kontextuális adatkészletből $context(position).

Metaadat-tulajdonságok

Ha az MQTT-t vagy a Kafkát használja forrásként vagy célként, hozzáférhet a metaadat-tulajdonságokhoz, például a témakörökhöz, a felhasználói tulajdonságokhoz és a fejlécekhez a leképezésekben. A szintaxis részleteiről és a példákról a Kifejezések hivatkozás Metaadat mezői című témakörben olvashat.

Környezetualizációs adathalmaz-választók

Ezek a választók lehetővé teszik, hogy a leképezések további adatokat integráljanak külső adatbázisokból, amelyeket környezetualizációs adathalmazoknak neveznek. További részletekért lásd: Környezetualizációs adathalmazok a kifejezések hivatkozásában, és adatok bővítése adatfolyamok használatával.

Rekordszűrés

A rekordszűrés során meg kell adni a feltételeket annak kiválasztásához, hogy mely rekordokat kell feldolgozni vagy elvetni.

Pont jelölése

Az adatfolyammezők elérési útjai pontszintaxist használnak a beágyazott mezőkre való hivatkozásra, speciális karakterek elkerülésével. A teljes szintaxis szabályaival és példákkal kapcsolatban lásd a pont jelölés és elhagyás részt a kifejezések referencia szakaszban.

Menekülés

A pontokat és speciális karaktereket a mezőútvonalakban való menekülésre vonatkozó szabályokért lásd a pont jelölését és a menekülést a kifejezések hivatkozásában.

Helyettesítő karakterek

A helyettesítő karakterek a csillag (*) használatával egyszerre több mezőnek is megfelelnek, ami leegyszerűsíti a leképezéseket, ha a kimenet szorosan hasonlít a bemenetre. A helyettesítő karakterek teljes szintaxisával, elhelyezési szabályaival, többbemenetes helyettesítő karakterekkel és specializációs viselkedéssel kapcsolatban lásd a helyettesítő karaktereket a kifejezések hivatkozásában.

Fontos

Ha a cél egy Parquet- vagy Delta-szerializálással rendelkező tárolási végpont, a leképezések további követelményekkel rendelkeznek. A séma által deklarált összes kimeneti levél leképezése ahelyett, hogy egy egész objektumot egy szülőútvonalhoz rendel, és győződjön meg arról, hogy a kimeneti séma minden mezőt deklarál, amelybe egy helyettesítő karakter ki van bontva. Ellenkező esetben a rekordok elvethetők. További információ: Tároló szerializálási viselkedése.

Utolsó ismert érték

Nyomon követheti egy tulajdonság utolsó ismert értékét. Utótaggal ? $last adja meg a bemeneti mezőt a mező utolsó ismert értékének rögzítéséhez. Ha egy tulajdonságból hiányzik egy érték egy későbbi bemeneti hasznos adatban, a rendszer az utolsó ismert értéket a kimeneti hasznos adathoz rendeli.

Vegyük például a következő leképezést:

inputs: [
  'Temperature ? $last'
]
output: 'Thermostat.Temperature'

Ebben a példában az utolsó ismert érték Temperature lesz nyomon követve. Ha egy későbbi bemeneti hasznos adat nem tartalmaz Temperature értéket, a kimenet az utolsó ismert értéket használja.