Udostępnij za pośrednictwem


Mapowanie parquet

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

Mapowanie parquet umożliwia mapowanie danych przychodzących na kolumny wewnątrz tabel, gdy plik źródłowy pozyskiwania jest w formacie Parquet.

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 Parquet musi zawierać jedną z następujących opcjonalnych właściwości:

Właściwość Type Opis
Pole string Nazwa pola w rekordzie Parquet.
Ścieżka string Jeśli wartość zaczyna się od $ niej interpretowana jako ścieżka do pola w dokumencie Parquet, który stanie się zawartością kolumny w tabeli. Ścieżka, która określa cały rekord Parquet, to $. Jeśli wartość nie zaczyna się od $ , jest interpretowana jako stała wartość. Ścieżki zawierające znaki specjalne należy stosować 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 Parquet.
Przekształcanie string Przekształcenie, które należy zastosować do zawartości za pomocą przekształceń mapowania.

Uwaga

Pola i ścieżka wykluczają się wzajemnie.

Następujące alternatywy są równoważne:

[
  {"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
  {"Column": "event_name", "Properties": {"Field": "EventName"}}
]

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.

Konwersje typów Parquet

Kompleksowa obsługa jest dostępna do konwertowania typów danych podczas pozyskiwania lub wykonywania zapytań dotyczących danych ze źródła Parquet.

Poniższa tabela zawiera mapowanie typów pól Parquet i typy kolumn tabeli, na które można je przekonwertować. Pierwsza kolumna zawiera listę typu Parquet, a inne pokazują typy kolumn tabeli, do których można je przekonwertować.

Uwaga

W przypadku typów DECIMAL Parquest typ fizyczny jest określony w nawiasach w następujący sposób:

  • I32: INT32 (32-bitowa liczba całkowita)
  • I64: INT64 (64-bitowa liczba całkowita)
  • FLBA: Tablica bajtów o stałej długości
  • BA: Tablica bajtów
Typ Parquet bool int długi rzeczywiste decimal datetime zakres czasu string Identyfikator GUID dynamiczna
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLOWSKI ✔️ ✔️ ✔️
DZIESIĘTNE (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DZIESIĘTNE (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DZIESIĘTNE (FLBA) ✔️ ✔️ ✔️ ✔️
DZIESIĘTNE (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
TIMESTAMP ✔️ ✔️
DATE ✔️ ✔️
STRUNA ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Identyfikator UUID ✔️ ✔️
JSON ✔️ ✔️
LISTA ✔️
MAPA ✔️
STRUCT ✔️

Przykłady

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"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 = "parquet",
    ingestionMapping =
    ```
    [
      {"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
      {"Column": "column_b", "Properties": {"Path": "$.[\'Field 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="parquet",
      ingestionMappingReference = "Mapping_Name"
  )

Mapowanie tożsamości

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

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