JSON-leképezés

A JSON-megfeleltetéssel a bejövő adatokat táblákon belüli oszlopokra képezheti le, ha a betöltési forrásfájl JSON formátumban van.

A leképezési lista minden eleme meghatározza egy adott oszlop leképezését. Ezek az elemek három tulajdonságból épülnek fel: column, datatypeés properties. További információ az adatleképezések áttekintésében.

Minden JSON-leképezési elemnek az alábbi választható tulajdonságok egyikét kell tartalmaznia:

Tulajdonság Típus Description
Elérési út string Ha az érték azzal kezdődik $ , hogy a JSON-dokumentumban lévő mező JSON-elérési útjaként lesz értelmezve, amely a tábla oszlopának tartalma lesz. A teljes dokumentumot megjelenítő JSON-elérési út a következő $: . Ha az érték nem azzal kezdődik $ , hogy az állandó értékként van értelmezve. A speciális karaktereket tartalmazó JSON-elérési utakat a tulajdonságnévként kell feloldani. További információ: JSONPath szintaxis.
ConstValue string A JSON-fájlban lévő érték helyett egy oszlophoz használandó állandó érték.
Átalakítás string Átalakítás, amelyet leképezési átalakításokkal kell alkalmazni a tartalomra.

Fontos

Várólista-betöltés esetén:

  • Ha a leképezésben hivatkozott tábla nem létezik az adatbázisban, a rendszer automatikusan létrehozza, mivel az összes oszlophoz érvényes adattípusok vannak megadva.
  • Ha a megfeleltetésben hivatkozott oszlop nem létezik a táblában, a rendszer automatikusan hozzáadja a táblához, mint az utolsó oszlopot az adott oszlopra vonatkozó adatok első betöltésekor, mivel az oszlophoz érvényes adattípus van megadva. Ha új oszlopokat szeretne hozzáadni egy leképezéshez, használja a .alter betöltési leképezés parancsot.
  • Az adatok kötegelése a betöltési tulajdonságok használatával történik. Minél több különböző betöltési leképezési tulajdonságot használ, például különböző ConstValue értékeket, annál töredezettebbé válik a betöltési folyamat, ami teljesítménycsökkenéshez vezethet.

Példák

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "source_uri",      "Properties": {"Transform": "SourceLocation"}},
  {"Column": "source_line",     "Properties": {"Transform": "SourceLineNumber"}},
  {"Column": "event_time",      "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
  {"Column": "ingestion_time",  "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
  {"Column": "full_record",     "Properties": {"Path": "$"}}
]

A fenti leképezés JSON-sztringként van szerializálva, amikor a .ingest felügyeleti parancs részeként van megadva.

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format = "json",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
        {"Column": "column_b", "Properties": {"Path": "$.Property"}},
        {"Column": "custom_column", "Properties": {"Path": "$.[\'Property name with space\']"}}
      ]
      ```
  )

Előre létrehozott leképezés

Ha a leképezés előre létrejött, hivatkozzon a leképezésre név szerint a .ingest felügyeleti parancsban.

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json",
        ingestionMappingReference = "Mapping_Name"
    )

Identitásleképezés

A JSON-leképezés használata a betöltés során leképezési séma definiálása nélkül (lásd : identitásleképezés).

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json"
    )

JSON-leképezés másolása

A következő eljárással másolhatja egy meglévő tábla JSON-leképezését, és létrehozhat egy új táblát ugyanazzal a leképezéssel:

  1. Futtassa a következő parancsot azon a táblán, amelynek a leképezését másolni szeretné:

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. A fenti parancs kimenetével hozzon létre egy új táblát ugyanazzal a leképezéssel:

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD