Inmatningsmappningar
Gäller för: ✅Microsoft Fabric✅Azure 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 |
RÅ | 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 , AVRO och 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 , ORC och 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 , ORC och 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 , AVRO och 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 , AVRO och 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 , AVRO och 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 , AVRO och 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 , AVRO och 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== |