Dela via


Inmatningsmappningar

Gäller för: ✅Microsoft FabricAzure Data Explorer

Inmatningsmappningar används under inmatning för att mappa inkommande data till kolumner i tabeller.

Data Explorer stöder olika typer av mappningar, både radorienterade (CSV, JSON, AVRO och W3CLOGFILE) och kolumnorienterade (Parquet och ORC).

Inmatningsmappningar kan definieras i inmatningskommandot eller förskapas och refereras från inmatningskommandot med hjälp av ingestionMappingReference parametrar. Inmatning är möjligt utan att ange en mappning. Mer information finns i identitetsmappning.

Varje element i mappningslistan är konstruerat från tre fält:

Egenskap Krävs Beskrivning
Spalt ✔️ Målkolumnnamn i tabellen.
Datatyp Datatyp som du vill skapa den mappade kolumnen med om den inte redan finns i tabellen.
Egenskaper Egenskapsväska som innehåller egenskaper som är specifika för varje mappning enligt beskrivningen på varje specifik mappningstypsida.

Viktig

För köad inmatning:

  • Om tabellen som refereras till i mappningen inte finns i databasen skapas den automatiskt, med tanke på att giltiga datatyper har angetts för alla kolumner.
  • Om en kolumn som refereras till i mappningen inte finns i tabellen läggs den automatiskt till i tabellen som den sista kolumnen första gången data matas in för den kolumnen, givet att en giltig datatyp har angetts för kolumnen. Om du vill lägga till nya kolumner i en mappning använder du kommandot .alter ingestion mapping.
  • Data batchas med hjälp av inmatningsegenskaper. Ju mer distinkta egenskaper för inmatningsmappning som används, till exempel olika ConstValue-värden, desto mer fragmenterad blir inmatningen, vilket kan leda till prestandaförsämring.

Mappningstyper som stöds

I följande tabell definieras mappningstyper som ska användas vid inmatning eller frågekörning av externa data i ett visst format.

Dataformat Mappningstyp
CSV CSV-mappning
TSV CSV-mappning
TSVe CSV-mappning
PSV CSV-mappning
SCSV CSV-mappning
SOHsv CSV-mappning
TXT CSV-mappning
CSV-mappning
JSON JSON-mappning
AVRO AVRO-mappning
APACHEAVRO AVRO-mappning
Parkettgolv Parquet-mappning
ORCH ORC-mappning
W3CLOGFILE W3CLOGFILE mappning

Exempel på inmatningsmappning

I följande exempel används tabellen RawEvents med följande schema:

.create table RawEvents (timestamp: datetime, deviceId: guid, messageId: guid, temperature: decimal, humidity: decimal) 

Enkel mappning

I följande exempel visas inmatning där mappningen definieras i inmatningskommandot. Kommandot matar in en JSON-fil från en URL till tabellen RawEvents. Mappningen anger sökvägen till varje fält i JSON-filen.

.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json') 
    with (
            format = "json",
            ingestionMapping =
            ```
            [ 
              {"column":"timestamp","Properties":{"path":"$.timestamp"}},
              {"column":"deviceId","Properties":{"path":"$.deviceId"}},
              {"column":"messageId","Properties":{"path":"$.messageId"}},
              {"column":"temperature","Properties":{"path":"$.temperature"}},
              {"column":"humidity","Properties":{"path":"$.humidity"}}
            ]
            ```
          )

Mappning med ingestionMappingReference

Om du vill mappa samma JSON-fil med hjälp av en fördefinierad mappning skapar du referensen för RawEventMapping inmatningsmappning med följande kommando:

.create table RawEvents ingestion json mapping 'RawEventMapping' 
  ```
  [ 
    {"column":"timestamp","Properties":{"path":"$.timestamp"}},
    {"column":"deviceId","Properties":{"path":"$.deviceId"}},
    {"column":"messageId","Properties":{"path":"$.messageId"}},
    {"column":"temperature","Properties":{"path":"$.temperature"}},
    {"column":"humidity","Properties":{"path":"$.humidity"}}
  ]
  ```

Mata in JSON-filen med hjälp av mappningsreferensen för RawEventMapping inmatning med följande kommando:

.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json') 
  with (
          format="json",
          ingestionMappingReference="RawEventMapping"
        )

Identitetsmappning

Inmatning är möjligt utan att ange ingestionMapping eller ingestionMappingReference egenskaper. Data mappas med hjälp av en identitetsdatamappning som härleds från tabellens schema. Tabellschemat förblir detsamma. format egenskapen ska anges. Se inmatningsformat.

Formattyp Format Mappningslogik
Tabelldataformat med definierad ordning på kolumner, till exempel avgränsare eller enkelradsformat. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Alla tabellkolumner mappas i respektive ordning till datakolumner i den ordning de visas i datakällan. Kolumndatatypen hämtas från tabellschemat.
Format med namngivna kolumner eller poster med namngivna fält. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Alla tabellkolumner mappas till datakolumner eller postfält med samma namn (skiftlägeskänsligt). Kolumndatatypen hämtas från tabellschemat.

Varning

Eventuella matchningar mellan tabellschemat och datastrukturen, till exempel kolumn- eller fältdatatyper, kolumn- eller fältnamn eller deras nummer kan resultera i tomma eller felaktiga data som matas in.

Mappa transformeringar

Vissa av dataformatmappningarna (Parquet, JSON och AVRO) stöder enkla och användbara inmatningstidstransformeringar. Om scenariot kräver mer komplex bearbetning vid inmatningstillfället använder du Uppdateringsprincip, vilket gör det möjligt att definiera enkel bearbetning med KQL-uttryck.

Transformering av sökvägsberoende Beskrivning Villkor
PropertyBagArrayToDictionary Transformerar JSON-matrisen med egenskaper, till exempel {events:[{"n1":"v1"},{"n2":"v2"}]}, till ordlistan och serialiserar den till ett giltigt JSON-dokument, till exempel {"n1":"v1","n2":"v2"}. Tillgänglig för mappningstyperna JSON, Parquet, AVROoch ORC.
SourceLocation Namnet på lagringsartefakten som tillhandahöll data, skriv sträng (till exempel blobens "BaseUri"-fält). Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVRO, ORCoch W3CLOGFILE.
SourceLineNumber Förskjutning i förhållande till lagringsartefakten skriver du långt (börjar med "1" och ökar per ny post). Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVRO, ORCoch W3CLOGFILE.
DateTimeFromUnixSeconds Konverterar tal som representerar unix-time (sekunder sedan 1970-01-01) till UTC datetime-sträng. Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVROoch ORC.
DateTimeFromUnixMilliseconds Konverterar tal som representerar unix-time (millisekunder sedan 1970-01-01) till UTC datetime-sträng. Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVROoch ORC.
DateTimeFromUnixMicroseconds Konverterar tal som representerar unix-time (mikrosekunder sedan 1970-01-01) till UTC datetime-sträng. Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVROoch ORC.
DateTimeFromUnixNanoseconds Konverterar tal som representerar unix-time (nanosekunder sedan 1970-01-01) till UTC datetime-sträng. Tillgänglig för mappningstyperna CSV, JSON, Parquet, AVROoch ORC.
DropMappedFields Mappar ett objekt i JSON-dokumentet till en kolumn och tar bort alla kapslade fält som redan refereras till av andra kolumnmappningar. Tillgänglig för mappningstyperna JSON, Parquet, AVROoch ORC.
BytesAsBase64 Behandlar data som bytematris och konverterar dem till en base64-kodad sträng. Tillgänglig för AVRO mappningstyp. För ApacheAvro format ska schematypen för det mappade datafältet vara bytes eller fixed Avro-typ. För Avro format ska fältet vara en matris som innehåller bytevärden från intervallet [0–255]. null matas in om data inte representerar en giltig bytematris.

Exempel på mappning av transformering

DropMappedFields omvandling:

Med följande JSON-innehåll:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

Följande datamappning mappar hela Props objektet till dynamisk kolumn Props och exkluderar redan mappade kolumner (Props.EventName är redan mappat till kolumn EventName, så det utesluts).

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

Inmatade data ser ut så här:

Tid EventName Rekvisita
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 transformering

Med följande AVRO-filinnehåll:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

Följande datamappning mappar ID-kolumnen två gånger, med och utan transformeringen.

[
    { "Column": "ID", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

Inmatade data ser ut så här:

ID Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==