Partilhar via


Mapeamentos de ingestão

Os mapeamentos de ingestão são utilizados durante a ingestão para mapear dados recebidos para colunas dentro de tabelas.

Data Explorer suporta diferentes tipos de mapeamentos, tanto orientados para linhas (CSV, JSON, AVRO e W3CLOGFILE) como orientados para colunas (Parquet e ORC).

Os mapeamentos de ingestão podem ser pré-criados e podem ser referenciados a partir do comando de ingestão através ingestionMappingReference de parâmetros. Embora a ingestão seja possível sem especificar um mapeamento. Para obter mais informações, veja mapeamento de identidades.

Cada elemento na lista de mapeamento é construído a partir de três campos:

Propriedade Necessário Descrição
Coluna ✔️ Nome da coluna de destino na tabela.
Datatype Tipo de dados com o qual criar a coluna mapeada se ainda não existir na tabela.
Propriedades Pacote de propriedades que contém propriedades específicas para cada mapeamento, conforme descrito em cada página de tipo de mapeamento específica.

Importante

Para ingestão em fila:

  • Se a tabela referenciada no mapeamento não existir na base de dados, esta é criada automaticamente, dado que são especificados tipos de dados válidos para todas as colunas.
  • Se uma coluna referenciada no mapeamento não existir na tabela, esta é adicionada automaticamente à tabela como a última coluna na primeira vez que os dados são ingeridos para essa coluna, dado que é especificado um tipo de dados válido para a coluna. Para adicionar novas colunas a um mapeamento, utilize o comando de mapeamento de ingestão .alter.
  • Os dados são colocados em lotes com as propriedades de Ingestão. Quanto mais distintas forem as propriedades de mapeamento de ingestão utilizadas, como diferentes valores do ConstValue, mais fragmentada se torna a ingestão, o que pode levar à degradação do desempenho.

Tipos de mapeamento suportados

A tabela seguinte define os tipos de mapeamento a utilizar ao ingerir ou consultar dados externos de um formato específico.

Formato de Dados Tipo de Mapeamento
CSV Mapeamento CSV
TSV Mapeamento CSV
TSVe Mapeamento CSV
PSV Mapeamento CSV
SCSV Mapeamento CSV
SOHsv Mapeamento CSV
TXT Mapeamento CSV
RAW Mapeamento CSV
JSON Mapeamento JSON
AVRO Mapeamento AVRO
APACHEAVRO Mapeamento AVRO
Parquet Mapeamento parquet
ORC Mapeamento ORC
W3CLOGFILE Mapeamento de W3CLOGFILE

Mapeamento de identidade

A ingestão é possível sem especificar ingestionMapping ou ingestionMappingReference propriedades. Os dados serão mapeados através de um mapeamento de dados de identidade derivado do esquema da tabela. O esquema da tabela permanecerá o mesmo. format deve ser especificada a propriedade . Veja formatos de ingestão.

Tipo de formato Formato Lógica de mapeamento
Formatos de dados tabulares com ordem definida de colunas, tais como formatos separados por delimitadores ou de linha única. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Todas as colunas de tabela são mapeadas pela respetiva ordem para colunas de dados para que apareçam na origem de dados. O tipo de dados de coluna é retirado do esquema da tabela.
Formatos com colunas ou registos nomeados com campos nomeados. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Todas as colunas de tabela são mapeadas para colunas de dados ou campos de registo com o mesmo nome (sensível às maiúsculas e minúsculas). O tipo de dados de coluna é retirado do esquema da tabela.

Aviso

Qualquer erro de correspondência entre o esquema da tabela e a estrutura dos dados, como tipos de dados de colunas ou campos, nomes de colunas ou campos ou o respetivo número, pode resultar em dados vazios ou incorretos ingeridos.

Transformações de mapeamento

Alguns dos mapeamentos de formato de dados (Parquet, JSON e AVRO) suportam transformações de tempo de ingestão simples e úteis. Quando o cenário exigir um processamento mais complexo no momento da ingestão, utilize a Política de atualização, que permite definir o processamento leve com a expressão KQL.

Transformação dependente do caminho Description Condições
PropertyBagArrayToDictionary Transforma a matriz JSON de propriedades, como {events:[{"n1":"v1"},{"n2":"v2"}]}, para o dicionário e serializa-a para um documento JSON válido, como {"n1":"v1","n2":"v2"}. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
SourceLocation Nome do artefacto de armazenamento que forneceu os dados, escreva cadeia (por exemplo, o campo "BaseUri" do blob). Disponível para CSVos tipos de mapeamento , JSON, Parquet, AVROORC e W3CLOGFILE .
SourceLineNumber Desvio em relação a esse artefacto de armazenamento, escreva long (começando com "1" e incrementando por novo registo). Disponível em: JSON, Parquet, AVROORC e W3CLOGFILE tipos de mapeamento.
DateTimeFromUnixSeconds Converte o número que representa o tempo unix (segundos desde 1970-01-01) para a cadeia de datetime UTC. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
DateTimeFromUnixMilliseconds Converte o número que representa o tempo unix (milissegundos desde 1970-01-01) para a cadeia datetime UTC. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
DateTimeFromUnixMicroseconds Converte o número que representa unix-time (microssegundos desde 1970-01-01) para a cadeia datetime UTC. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
DateTimeFromUnixNanoseconds Converte o número que representa unix-time (nanossegundos desde 1970-01-01) para a cadeia datetime UTC. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
DropMappedFields Mapeia um objeto no documento JSON para uma coluna e remove todos os campos aninhados já referenciados por outros mapeamentos de colunas. Disponível para JSONos tipos de mapeamento , ParquetAVRO e ORC .
BytesAsBase64 Trata os dados como uma matriz de bytes e converte-os numa cadeia codificada em base64. Disponível para AVRO o tipo de mapeamento. Para ApacheAvro formato, o tipo de esquema do campo de dados mapeado deve ser bytes ou fixed o tipo Avro. Para Avro o formato, o campo deve ser uma matriz que contenha valores de bytes do intervalo [0-255]. null é ingerido se os dados não representarem uma matriz de bytes válida.

Exemplos de transformação de mapeamento

DropMappedFields transformação:

Tendo em conta os seguintes conteúdos JSON:

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

O mapeamento de dados seguinte mapeia todo Props o objeto para a coluna Props dinâmica, excluindo as colunas já mapeadas (Props.EventName já está mapeado para a coluna EventName, pelo que é excluído).

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

Os dados ingeridos têm o seguinte aspeto:

Hora EventName Adereços
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 transformação

Tendo em conta os seguintes conteúdos de ficheiro AVRO:

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

O mapeamento de dados seguinte mapeia a coluna de ID duas vezes, com e sem a transformação.

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

Os dados ingeridos têm o seguinte aspeto:

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