Mapowania pozyskiwania

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

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

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

Mapowania pozyskiwania mogą być wstępnie tworzone i mogą być przywoływane z polecenia pozyskiwania przy użyciu ingestionMappingReference parametrów. 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ści Wymagania 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órej odwołuje się mapowanie, nie istnieje w bazie danych, zostanie utworzona automatycznie, biorąc pod uwagę, że prawidłowe typy danych są określone dla wszystkich kolumn.
  • Jeśli kolumna przywoływana w mapowaniu nie istnieje w tabeli, zostanie ona automatycznie dodana do tabeli jako ostatnia kolumna podczas pierwszego pozyskiwania danych dla tej kolumny, biorąc pod uwagę prawidłowy typ danych określony dla kolumny. Aby dodać nowe kolumny do mapowania, użyj polecenia .alter ingestion mapowania.
  • 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
SUROWY Mapowanie woluminów CSV
JSON Mapowanie JSON
AVRO Mapowanie AVRO
APACHEAVRO Mapowanie AVRO
Parquet Mapowanie parquet
ORK Mapowanie ORC
W3CLOGFILE mapowanie W3CLOGFILE

Mapowanie tożsamości

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

Typ formatu Formatuj 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, takimi jak typy danych kolumn lub pól, nazwy kolumn lub pól lub 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 mapowań , Parquet, AVROi ORC .
Lokalizacja źródłowa Nazwa artefaktu magazynu, który dostarczył dane, wpisz ciąg (na przykład pole "BaseUri" obiektu blob). Dostępne dla CSVtypów mapowania , ORCAVROJSONParqueti .W3CLOGFILE
SourceLineNumber Przesunięcie względem tego artefaktu magazynu, wpisz długi (począwszy od "1" i przyrostowe na nowy rekord). Dostępne dla CSVtypów mapowania , ORCAVROJSONParqueti .W3CLOGFILE
DateTimeFromUnixSeconds Konwertuje liczbę reprezentującą czas unix (sekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla CSVtypów mapowania , , JSONParquet, AVROi ORC .
DateTimeFromUnixMilliseconds Konwertuje liczbę reprezentującą czas unix (milisekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla CSVtypów mapowania , , JSONParquet, AVROi ORC .
DateTimeFromUnixMicroseconds Konwertuje liczbę reprezentującą czas unix (mikrosekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla CSVtypów mapowania , , JSONParquet, AVROi ORC .
DateTimeFromUnixNanoseconds Konwertuje liczbę reprezentującą czas unix (nanosekundy od 1970-01-01) do ciągu daty/godziny UTC. Dostępne dla CSVtypów mapowania , , JSONParquet, AVROi 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 mapowań , Parquet, AVROi 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łcania mapowania

DropMappedFields przekształcenie:

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ą, a jednocześnie wyklucza już zamapowane kolumny (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:

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

BytesAsBase64 przekształcenie

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]
    }
}

Następujące 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==