Sdílet prostřednictvím


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.

Průzkumník dat podporuje různé typy mapování, které jsou orientované na řádky (CSV, JSON, AVRO a W3CLOGFILE) a sloupcově orientované (Parquet a ORC).

Mapování příjmu dat je možné předem vytvořit a lze na to odkazovat z příkazu ingestování pomocí ingestionMappingReference parametrů. I když je příjem dat 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 Požadováno Popis
Sloupec ✔️ Název cílového sloupce v tabulce
Datatype Datový typ, se kterým se vytvoří mapovaný sloupec, pokud ještě v tabulce neexistuje.
Vlastnosti Kontejner 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é

Příjem dat ve frontě:

  • Pokud tabulka odkazovaná v mapování v databázi neexistuje, vytvoří se automaticky vzhledem k tomu, že platné datové typy jsou zadány pro všechny sloupce.
  • Pokud sloupec odkazovaný v mapování v tabulce neexistuje, přidá se automaticky do tabulky jako poslední sloupec při prvním ingestování dat pro tento sloupec, protože je pro sloupec zadaný platný datový typ. Pokud chcete do mapování přidat nové sloupce, použijte příkaz .alter ingestion mapping.
  • Data se 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 fragmentovaný příjem dat se stane, 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í sdíleného svazku clusteru
TSV Mapování sdíleného svazku clusteru
TSVe Mapování sdíleného svazku clusteru
PSV Mapování sdíleného svazku clusteru
SCSV Mapování sdíleného svazku clusteru
SOHsv Mapování sdíleného svazku clusteru
TXT Mapování sdíleného svazku clusteru
SYROVÝ Mapování sdíleného svazku clusteru
JSON Mapování JSON
AVRO Mapování AVRO
APACHEAVRO Mapování AVRO
Parquet Mapování Parquet
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 se mapují 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ů, například oddělovačem odděleným nebo jednořádkovým formátem. 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 sloupce se přebírá ze schématu tabulky.
Formátuje pojmenované sloupce nebo záznamy s pojmenovanými poli. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Všechny sloupce tabulky se mapují na datové sloupce nebo pole záznamů se stejným názvem (rozlišují se malá a velká písmena). Datový typ sloupce se přebírá ze schématu tabulky.

Upozorňující

Jakákoli neshoda mezi schématem tabulky a strukturou dat, jako jsou datové typy sloupců nebo polí, názvy sloupců nebo polí nebo jejich číslo, můžou vést k tomu, že se ingestují prázdná nebo nesprávná data.

Mapování transformací

Některá mapování formátu 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 ingestující době, použijte zásady aktualizace, které umožňují definovat zjednodušené zpracování pomocí výrazu KQL.

Transformace závislá na cestě Popis Podmínky
PropertyBagArrayToDictionary Transformuje pole vlastností JSON, jako {events:[{"n1":"v1"},{"n2":"v2"}]}je například , na slovník a serializuje ho na platný dokument JSON, například {"n1":"v1","n2":"v2"}. K dispozici pro JSONtypy mapování ParquetAVRO , a ORC mapování.
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í , ORCAVROJSONParqueta W3CLOGFILE mapování.
SourceLineNumber Posun vzhledem k danému artefaktu úložiště, typu long (počínaje hodnotou 1 a zvýšením na nový záznam). K dispozici pro CSVtypy mapování , ORCAVROJSONParqueta W3CLOGFILE mapování.
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 mapování.
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 mapování.
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 mapování.
DateTimeFromUnixNanoseconds Převede číslo představující unix-time (nanosekundy od 1970-01-01) na řetězec data a času UTC. K dispozici pro JSONtypy mapování ParquetAVRO , a ORC mapování.
DropMappedFields Namapuje objekt v dokumentu JSON na sloupec a odebere všechna vnořená pole, na která už odkazuje mapování jiných sloupců. K dispozici pro JSONtypy mapování ParquetAVRO , a ORC mapování.
BytesAsBase64 Považuje data za pole bajtů a převede je na řetězec s kódováním 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 nebo fixed typ Avro. Pro Avro formát by pole mělo být pole obsahující bajtové hodnoty z oblasti [0–255]. null ingestuje se, pokud data nepředstavují platné bajtové pole.

Příklady mapování transformací

DropMappedFields transformace:

S ohledem na následující obsah 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 a současně vyloučí už namapované sloupce (Props.EventName je již namapováno do sloupce EventName, takže je vyloučeno).

[
    { "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 a bez transformace.

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

Přijatá data vypadají takto:

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