Mapování příjmu dat

Mapování příjmu dat se používají během příjmu dat k mapování příchozích dat na sloupce uvnitř tabulek.

Data Explorer podporuje různé typy mapování, a to jak řádkově orientované (CSV, JSON, AVRO a W3CLOGFILE), tak sloupcově orientované (Parquet a ORC).

Mapování příjmu dat je možné předem vytvořit a lze na něj odkazovat z příkazu ingestování pomocí ingestionMappingReference parametrů. Příjem dat je však možný bez zadání mapování. Další informace najdete v tématu mapování identit.

Každý prvek v seznamu mapování je vytvořen ze tří polí:

Vlastnost Povinné Popis
Sloupec ✔️ Název cílového sloupce v tabulce
Datatype Datový typ, pomocí kterého se vytvoří namapovaný sloupec, pokud v tabulce ještě neexistuje.
Vlastnosti Sáček vlastností obsahující vlastnosti specifické pro každé mapování, jak je popsáno na každé stránce konkrétního typu mapování.

Důležité

Pro příjem dat ve frontě:

  • Pokud tabulka odkazovaná v mapování v databázi neexistuje, vytvoří se automaticky s ohledem na to, že jsou pro všechny sloupce zadané platné datové typy.
  • Pokud sloupec odkazovaný v mapování v tabulce neexistuje, automaticky se přidá do tabulky jako poslední sloupec při prvním ingestování dat pro tento sloupec, protože pro sloupec je zadaný platný datový typ. Pokud chcete do mapování přidat nové sloupce, použijte příkaz .alter pro mapování příjmu dat.
  • Data jsou dávková pomocí vlastností příjmu dat. Čím více jedinečných vlastností mapování příjmu dat, jako jsou různé hodnoty ConstValue, tím více fragmentace bude příjem dat, což může vést ke snížení výkonu.

Podporované typy mapování

Následující tabulka definuje typy mapování, které se mají použít při ingestování nebo dotazování externích dat určitého formátu.

Formát dat Typ mapování
CSV Mapování CSV
TSV Mapování CSV
TSVe Mapování CSV
PSV Mapování CSV
SCSV Mapování CSV
SOHsv Mapování CSV
TXT Mapování CSV
SYROVÉ Mapování CSV
JSON Mapování JSON
AVRO Mapování AVRO
APACHEAVRO Mapování AVRO
Parquet Mapování parketů
ORC Mapování ORC
W3CLOGFILE mapování W3CLOGFILE

Mapování identit

Příjem dat je možný bez zadání ingestionMapping nebo ingestionMappingReference vlastností. Data budou mapována pomocí mapování dat identity odvozeného ze schématu tabulky. Schéma tabulky zůstane stejné. format vlastnost by měla být zadána. Viz formáty příjmu dat.

Typ formátu Formát Logika mapování
Formáty tabulkových dat s definovaným pořadím sloupců, jako jsou formáty oddělené oddělovačem nebo jednořádkové formáty. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Všechny sloupce tabulky se mapují v příslušném pořadí na sloupce dat v pořadí, v jakém se zobrazují ve zdroji dat. Datový typ sloupec je převzat ze schématu tabulky.
Formáty s pojmenovanými sloupci nebo záznamy s pojmenovanými poli JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Všechny sloupce tabulky se mapují na sloupce dat nebo pole záznamů se stejným názvem (rozlišují se malá a velká písmena). Datový typ sloupec je převzat ze schématu tabulky.

Upozornění

Jakákoli neshoda mezi schématem tabulky a strukturou dat, jako jsou datové typy sloupců nebo polí, názvy sloupců nebo polí nebo jejich počet, může vést k prázdnému nebo nesprávnému ingestování dat.

Mapování transformací

Některá mapování formátů dat (Parquet, JSON a AVRO) podporují jednoduché a užitečné transformace v čase ingestace. Pokud scénář vyžaduje složitější zpracování v době příjmu, použijte zásadu aktualizace, která umožňuje definovat zjednodušené zpracování pomocí výrazu KQL.

Transformace závislá na cestě Description Podmínky
PropertyBagArrayToDictionary Transformuje pole vlastností JSON, například {events:[{"n1":"v1"},{"n2":"v2"}]}, do slovníku a serializuje ho na platný dokument JSON, například {"n1":"v1","n2":"v2"}. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
SourceLocation Název artefaktu úložiště, který poskytl data, zadejte řetězec (například pole BaseUri objektu blob). K dispozici pro CSVtypy mapování , JSONParquet, AVRO, ORC a W3CLOGFILE .
SourceLineNumber Posun vzhledem k danému artefaktu úložiště zadejte long (počínaje hodnotou 1 a přírůstkem na nový záznam). K dispozici v typech JSONmapování , Parquet, AVROORC a W3CLOGFILE .
DateTimeFromUnixSeconds Převede číslo představující unix-time (sekundy od 1970-01-01) na řetězec data a času UTC. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
DateTimeFromUnixMilliseconds Převede číslo představující unix-time (milisekundy od 1970-01-01) na řetězec data a času UTC. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
DateTimeFromUnixMicroseconds Převede číslo představující unix-time (mikrosekundy od 1970-01-01) na řetězec data a času UTC. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
DateTimeFromUnixNanoseconds Převede číslo představující unix-time (nanosekundy od 1. 1. 1970) na řetězec data a času UTC. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
DropMappedFields Namapuje objekt v dokumentu JSON na sloupec a odebere všechna vnořená pole, na která už odkazují jiná mapování sloupců. K dispozici pro JSONtypy mapování , ParquetAVRO a ORC .
BytesAsBase64 Zachází s daty jako s polem bajtů a převede je na řetězec kódovaný jako base64. K dispozici pro AVRO typ mapování. Pro ApacheAvro formát by typ schématu mapovaného datového pole měl být bytes typ nebo fixed Avro. Pro Avro formát by pole mělo být pole obsahující hodnoty bajtů z rozsahu [0–255]. null se ingestuje, pokud data nepředstavují platné pole bajtů.

Příklady mapování transformací

DropMappedFields Transformace:

Vzhledem k následujícímu obsahu JSON:

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

Následující mapování dat mapuje celý Props objekt do dynamického sloupce Props s vyloučením již namapovaných sloupců (Props.EventName je již namapovaný do sloupce EventName, takže je vyloučený).

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

Přijatá data vypadají takto:

Čas EventName Rekvizity
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 Transformace

Vzhledem k následujícímu obsahu souboru AVRO:

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

Následující mapování dat mapuje sloupec ID dvakrát, s transformací a bez transformace.

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

Přijatá data vypadají takto:

Id Idkódování base64
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==