Udostępnij za pośrednictwem


Mapowanie JSON

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

Mapowanie JSON służy do mapowania danych przychodzących na kolumny wewnątrz tabel, gdy plik źródłowy pozyskiwania jest w formacie JSON.

Każdy element na liście mapowania definiuje mapowanie dla określonej kolumny. Te elementy są konstruowane z trzech właściwości: column, datatypei properties. Dowiedz się więcej w omówieniu mapowań danych.

Każdy element mapowania JSON musi zawierać jedną z następujących opcjonalnych właściwości:

Właściwość Type Opis
Ścieżka string Jeśli wartość zaczyna się od $ niej interpretowana jako ścieżka JSON do pola w dokumencie JSON, który stanie się zawartością kolumny w tabeli. Ścieżka JSON, która oznacza cały dokument, to $. Jeśli wartość nie zaczyna się od $ , jest interpretowana jako stała wartość. Ścieżki JSON zawierające znaki specjalne powinny zostać uniknięte jako ['Nazwa właściwości']. Aby uzyskać więcej informacji, zobacz Składnia JSONPath.
ConstValue string Stała wartość, która ma być używana dla kolumny zamiast wartości wewnątrz pliku JSON.
Przekształcanie string Przekształcenie, które należy zastosować do zawartości za pomocą przekształceń 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.

Przykłady

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "source_uri",      "Properties": {"Transform": "SourceLocation"}},
  {"Column": "source_line",     "Properties": {"Transform": "SourceLineNumber"}},
  {"Column": "event_time",      "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
  {"Column": "ingestion_time",  "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
  {"Column": "full_record",     "Properties": {"Path": "$"}}
]

Powyższe mapowanie jest serializowane jako ciąg JSON, gdy jest ono udostępniane jako część .ingest polecenia zarządzania.

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format = "json",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
        {"Column": "column_b", "Properties": {"Path": "$.Property"}},
        {"Column": "custom_column", "Properties": {"Path": "$.[\'Property name with space\']"}}
      ]
      ```
  )

Wstępnie utworzone mapowanie

Po wstępnie utworzonym mapowaniu należy odwołać się do mapowania według nazwy w poleceniu .ingest zarządzania.

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json",
        ingestionMappingReference = "Mapping_Name"
    )

Mapowanie tożsamości

Użyj mapowania JSON podczas pozyskiwania bez definiowania schematu mapowania (zobacz mapowanie tożsamości).

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json"
    )

Kopiowanie mapowania JSON

Możesz skopiować mapowanie kodu JSON istniejącej tabeli i utworzyć nową tabelę z tym samym mapowaniem przy użyciu następującego procesu:

  1. Uruchom następujące polecenie w tabeli, której mapowanie chcesz skopiować:

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. Użyj danych wyjściowych powyższego polecenia, aby utworzyć nową tabelę z tym samym mapowaniem:

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD