Partilhar via


Mapeamento Parquet

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

Use o mapeamento Parquet para mapear dados de entrada para colunas dentro de tabelas quando o arquivo de origem de assimilação estiver no formato Parquet.

Cada elemento na lista de mapeamento define o mapeamento para uma coluna específica. Esses elementos são construídos a partir de três propriedades: column, datatype, e properties. Saiba mais na visão geral dos mapeamentos de dados.

Cada elemento de mapeamento Parquet deve conter uma das seguintes propriedades opcionais:

Propriedade Type Descrição
Campo string Nome do campo no registro do Parquet.
Caminho string Se o valor começar com $ , ele será interpretado como o caminho para o campo no documento Parquet que se tornará o conteúdo da coluna na tabela. O caminho que denota todo o registro do Parquet é $. Se o valor não começar com $ , ele será interpretado como um valor constante. Os caminhos que incluem caracteres especiais devem ser escapados como ['Nome da propriedade']. Para obter mais informações, consulte Sintaxe JSONPath.
ConstValue string O valor constante a ser usado para uma coluna em vez de algum valor dentro do arquivo Parquet.
Transformação string Transformação que deve ser aplicada no conteúdo com transformações de mapeamento.

Observação

Campo e Caminho são mutuamente exclusivos.

As seguintes alternativas são equivalentes:

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

Importante

Para ingestão em fila:

  • Se a tabela referenciada no mapeamento não existir no banco de dados, ela será criada automaticamente, considerando que os tipos de dados válidos são especificados para todas as colunas.
  • Se uma coluna referenciada no mapeamento não existir na tabela, ela será adicionada automaticamente à tabela como a última coluna na primeira vez que os dados forem ingeridos para essa coluna, desde que um tipo de dados válido seja especificado para a coluna. Para adicionar novas colunas a um mapeamento, use o comando de mapeamento de ingestão .alter.
  • Os dados são agrupados em lote usando propriedades de assimilação. Quanto mais propriedades de mapeamento de ingestão distintas forem usadas, como valores ConstValue diferentes, mais fragmentada a ingestão se tornará, o que pode levar à degradação do desempenho.

Conversões de tipo de parquet

O suporte abrangente é fornecido para converter tipos de dados quando você está ingerindo ou consultando dados de uma fonte Parquet.

A tabela a seguir fornece um mapeamento dos tipos de campo Parquet e os tipos de coluna de tabela para os quais eles podem ser convertidos. A primeira coluna lista o tipo de Parquet e as outras mostram os tipos de coluna da tabela para os quais eles podem ser convertidos.

Observação

Para tipos Parquest DECIMAL, o tipo físico é especificado entre parênteses, da seguinte maneira:

  • I32: INT32 (inteiro de 32 bits)
  • I64: INT64 (inteiro de 64 bits)
  • FLBA: Matriz de bytes de comprimento fixo
  • BA: Matriz de bytes
Tipo do Parquet bool INT long real decimal datetime timespan string guid dinâmico
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEAN ✔️ ✔️ ✔️
DECIMAL (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (FLBA) ✔️ ✔️ ✔️ ✔️
DECIMAL (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
timestamp ✔️ ✔️
DATE ✔️ ✔️
STRING ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UUID ✔️ ✔️
JSON ✔️ ✔️
LISTA ✔️
MAP ✔️
STRUCT ✔️

Exemplos

[
  {"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": "$"}}
]

O mapeamento acima é serializado como uma cadeia de caracteres JSON quando é fornecido como parte do .ingest comando de gerenciamento.

.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\']"}},
    ]
    ```
  )

Mapeamento pré-criado

Quando o mapeamento for pré-criado, faça referência ao mapeamento por nome no .ingest comando de gerenciamento.

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

Mapeamento de identidade

Use o mapeamento do Parquet durante a assimilação sem definir um esquema de mapeamento (consulte mapeamento de identidade).

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