Mapowania pozyskiwania

Mapowania pozyskiwania są używane podczas pozyskiwania do mapowania danych przychodzących na kolumny wewnątrz tabel.

Data Explorer obsługuje różne typy mapowań, zarówno zorientowane na wiersze (CSV, JSON, AVRO i W3CLOGFILE) oraz zorientowane na kolumny (Parquet i ORC).

Mapowania pozyskiwania można wstępnie utworzyć i przywoływać się z polecenia pozyskiwania przy użyciu ingestionMappingReference parametrów. Chociaż pozyskiwanie jest możliwe bez określania mapowania. Aby uzyskać więcej informacji, zobacz Mapowanie tożsamości.

Każdy element na liście mapowania jest konstruowany z trzech pól:

Właściwość Wymagane Opis
Kolumna ✔️ Nazwa kolumny docelowej w tabeli.
Datatype Typ danych, za pomocą którego ma zostać utworzona zamapowana kolumna, jeśli jeszcze nie istnieje w tabeli.
Właściwości Torba właściwości zawierająca właściwości specyficzne dla każdego mapowania zgodnie z opisem na każdej stronie określonego typu mapowania.

Ważne

W przypadku pozyskiwania w kolejce:

  • Jeśli tabela, do którego odwołuje się mapowanie, nie istnieje w bazie danych, zostanie utworzona automatycznie, biorąc pod uwagę, że dla wszystkich kolumn określono prawidłowe typy danych.
  • Jeśli kolumna przywoływana w mapowaniu nie istnieje w tabeli, zostanie automatycznie dodana do tabeli jako ostatnia kolumna przy pierwszym pozyskiwaniu danych dla tej kolumny, biorąc pod uwagę, że określono prawidłowy typ danych dla kolumny. Aby dodać nowe kolumny do mapowania, użyj polecenia .alter ingestion mapping.
  • Dane są wsadowe przy użyciu właściwości pozyskiwania. Bardziej odrębne właściwości mapowania pozyskiwania, takie jak różne wartości ConstValue, tym bardziej rozdrobnione pozyskiwanie staje się, co może prowadzić do obniżenia wydajności.

Obsługiwane typy mapowań

W poniższej tabeli zdefiniowano typy mapowań, które mają być używane podczas pozyskiwania lub wykonywania zapytań względem danych zewnętrznych określonego formatu.

Format danych Typ mapowania
CSV Mapowanie woluminów CSV
TSV Mapowanie woluminów CSV
TSVe Mapowanie woluminów CSV
PSV Mapowanie woluminów CSV
SCSV Mapowanie woluminów CSV
SOHsv Mapowanie woluminów CSV
TXT Mapowanie woluminów CSV
RAW Mapowanie woluminów CSV
JSON Mapowanie JSON
AVRO Mapowanie AVRO
APACHEAVRO Mapowanie AVRO
Parquet Mapowanie Parquet
ORC Mapowanie ORC
W3CLOGFILE mapowanie W3CLOGFILE

Mapowanie tożsamości

Pozyskiwanie jest możliwe bez określania ingestionMapping lub ingestionMappingReference właściwości. Dane zostaną zamapowane przy użyciu mapowania danych tożsamości pochodzącego ze schematu tabeli. Schemat tabeli pozostanie taki sam. format należy określić właściwość . Zobacz formaty pozyskiwania.

Typ formatu Format Logika mapowania
Formaty danych tabelarycznych ze zdefiniowaną kolejnością kolumn, takie jak formaty rozdzielane ogranicznikami lub jednowierszowe. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Wszystkie kolumny tabeli są mapowane w odpowiedniej kolejności na kolumny danych, aby były wyświetlane w źródle danych. Typ danych kolumny jest pobierany ze schematu tabeli.
Formaty z nazwanymi kolumnami lub rekordami z nazwanymi polami. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Wszystkie kolumny tabeli są mapowane na kolumny danych lub pola rekordów o tej samej nazwie (z uwzględnieniem wielkości liter). Typ danych kolumny jest pobierany ze schematu tabeli.

Ostrzeżenie

Wszelkie niezgodności między schematem tabeli a strukturą danych, takie jak typy danych kolumn lub pól, nazwy kolumn lub pól albo ich liczba, mogą spowodować pozyskiwanie pustych lub nieprawidłowych danych.

Przekształcenia mapowania

Niektóre mapowania formatów danych (Parquet, JSON i AVRO) obsługują proste i przydatne przekształcenia czasu pozyskiwania. Jeśli scenariusz wymaga bardziej złożonego przetwarzania w czasie pozyskiwania, użyj zasad aktualizacji, które umożliwiają definiowanie uproszczonego przetwarzania przy użyciu wyrażenia KQL.

Transformacja zależna od ścieżki Opis Warunki
PropertyBagArrayToDictionary Przekształca tablicę właściwości JSON, taką jak {events:[{"n1":"v1"},{"n2":"v2"}]}, na słownik i serializuje ją do prawidłowego dokumentu JSON, takiego jak {"n1":"v1","n2":"v2"}. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
Sourcelocation Nazwa artefaktu magazynu, który dostarczył danych, wpisz ciąg (na przykład pole "BaseUri" obiektu blob). Dostępne dla CSVtypów mapowania , , JSONParquet, AVROORC i W3CLOGFILE .
SourceLineNumber Przesunięcie względem tego artefaktu magazynu, typ długi (rozpoczynający się od "1" i zwiększający się na nowy rekord). Dostępne w typach mapowania: JSON, Parquet, AVROORC i W3CLOGFILE .
DateTimeFromUnixSeconds Konwertuje liczbę reprezentującą czas systemu unix (sekundy od 1970-01-01) na ciąg daty/godziny UTC. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
DateTimeFromUnixMilliseconds Konwertuje liczbę reprezentującą czas systemu unix (milisekundy od 1970-01-01) na ciąg daty/godziny UTC. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
DateTimeFromUnixMicroseconds Konwertuje liczbę reprezentującą mikrosekundy (mikrosekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
DateTimeFromUnixNanoseconds Konwertuje liczbę reprezentującą czas systemu unix (nanosekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
DropMappedFields Mapuje obiekt w dokumencie JSON na kolumnę i usuwa wszystkie zagnieżdżone pola, do których już odwołuje się inne mapowania kolumn. Dostępne dla JSONtypów mapowania , ParquetAVRO i ORC .
BytesAsBase64 Traktuje dane jako tablicę bajtów i konwertuje je na ciąg zakodowany w formacie base64. Dostępny dla AVRO typu mapowania. W przypadku ApacheAvro formatu typ schematu mapowanego pola danych powinien mieć bytes wartość lub fixed Typ Avro. W przypadku Avro formatu pole powinno być tablicą zawierającą wartości bajtów z zakresu [0–255]. null jest pozyskiwany, jeśli dane nie reprezentują prawidłowej tablicy bajtów.

Przykłady przekształceń mapowania

DropMappedFields Transformacji:

Biorąc pod uwagę następującą zawartość JSON:

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

Poniższe mapowanie danych mapuje cały Props obiekt na kolumnę Props dynamiczną z wyłączeniem już zamapowanych kolumn (Props.EventName jest już mapowane na kolumnę EventName, więc jest wykluczone).

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

Pozyskane dane wyglądają następująco:

Godzina EventName Rekwizyty
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 Transformacji

Biorąc pod uwagę następującą zawartość pliku AVRO:

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

Poniższe mapowanie danych mapuje kolumnę identyfikatora dwa razy z transformacją i bez jej przekształcenia.

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

Pozyskane dane wyglądają następująco:

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