Mapeamentos de ingestão
Os mapeamentos de ingestão são usados durante a ingestão para mapear dados de entrada para colunas dentro de tabelas.
Data Explorer dá suporte a diferentes tipos de mapeamentos, orientados a linhas (CSV, JSON, AVRO e W3CLOGFILE) e orientados a colunas (Parquet e ORC).
Os mapeamentos de ingestão podem ser pré-criados e podem ser referenciados no comando ingestão usando ingestionMappingReference
parâmetros. Embora a ingestão seja possível sem especificar um mapeamento. Para obter mais informações, consulte mapeamento de identidade.
Cada elemento na lista de mapeamento é construído a partir de três campos:
Propriedade | Obrigatório | Descrição |
---|---|---|
Coluna | ✔️ | Nome da coluna de destino na tabela. |
Datatype | Tipo de dados com o qual criar a coluna mapeada se ela ainda não existir na tabela. | |
Propriedades | Recipiente de propriedades que contém propriedades específicas para cada mapeamento, conforme descrito em cada página de tipo de mapeamento específico. |
Importante
Para ingestão na 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, pois a última coluna na primeira vez que os dados são ingeridos para essa coluna, dado que um tipo de dados válido é especificado para a coluna. Para adicionar novas colunas a um mapeamento, use o comando .alter ingestion mapping.
- Os dados são agrupados em lote usando as propriedades de Ingestão. Quanto mais propriedades de mapeamento de ingestão distintas usadas, como valores constvalue diferentes, mais fragmentada a ingestão se torna, o que pode levar à degradação do desempenho.
Tipos de mapeamento com suporte
A tabela a seguir define os tipos de mapeamento a serem usados ao ingerir ou consultar dados externos de um formato específico.
Formato de Dados | Tipo de Mapeamento |
---|---|
CSV | Mapeamento de CSV |
TSV | Mapeamento de CSV |
TSVe | Mapeamento de CSV |
PSV | Mapeamento de CSV |
SCSV | Mapeamento de CSV |
SOHsv | Mapeamento de CSV |
TXT | Mapeamento de CSV |
RAW | Mapeamento de CSV |
JSON | Mapeamento JSON |
AVRO | Mapeamento AVRO |
APACHEAVRO | Mapeamento AVRO |
Parquet | Mapeamento parquet |
ORC | Mapeamento de ORC |
W3CLOGFILE | Mapeamento de W3CLOGFILE |
Mapeamento de identidade
A ingestão é possível sem especificar ingestionMapping
propriedades ou ingestionMappingReference
. Os dados serão mapeados usando um mapeamento de dados de identidade derivado do esquema da tabela. O esquema da tabela permanecerá o mesmo. format
deve ser especificada. Consulte formatos de ingestão.
Tipo de formato | Formatar | Lógica de mapeamento |
---|---|---|
Formatos de dados tabulares com ordem definida de colunas, como formatos separados por delimitador ou de linha única. | CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw | Todas as colunas de tabela são mapeadas em sua respectiva ordem para colunas de dados na ordem em que aparecem na fonte de dados. O tipo de dados de coluna é obtido do esquema de tabela. |
Formatos com colunas ou registros 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 registro com o mesmo nome (diferencia maiúsculas de minúsculas). O tipo de dados de coluna é obtido do esquema de tabela. |
Aviso
Qualquer incompatibilidade entre o esquema de tabela e a estrutura de dados, como tipos de dados de coluna ou de campo, nomes de coluna ou de campo ou seu 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) dão suporte a transformações simples e úteis de tempo de ingestão. Quando o cenário exigir um processamento mais complexo no momento da ingestão, use a Política de atualização, que permite definir o processamento leve usando a expressão KQL.
Transformação dependente de caminho | Descrição | Condições |
---|---|---|
PropertyBagArrayToDictionary | Transforma a matriz JSON de propriedades, como {events:[{"n1":"v1"},{"n2":"v2"}]} , em dicionário e serializa-a em um documento JSON válido, como {"n1":"v1","n2":"v2"} . |
Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
SourceLocation | Nome do artefato de armazenamento que forneceu os dados, digite cadeia de caracteres (por exemplo, o campo "BaseUri" do blob). | Disponível para CSV os tipos de mapeamento , JSON , Parquet , AVRO ORC e W3CLOGFILE . |
SourceLineNumber | Deslocamento em relação a esse artefato de armazenamento, digite long (começando com '1' e incrementando por novo registro). | Disponível em: JSON , Parquet , AVRO e ORC tipos de W3CLOGFILE mapeamento. |
DateTimeFromUnixSeconds | Converte o número que representa unix-time (segundos desde 1970-01-01) em cadeia de caracteres datetime UTC. | Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
DateTimeFromUnixMilliseconds | Converte o número que representa unix-time (milissegundos desde 1970-01-01) em cadeia de caracteres datetime UTC. | Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
DateTimeFromUnixMicroseconds | Converte o número que representa unix-time (microssegundos desde 1970-01-01) em cadeia de caracteres datetime UTC. | Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
DateTimeFromUnixNanoseconds | Converte número que representa unix-time (nanossegundos desde 1970-01-01) em cadeia de caracteres datetime UTC. | Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
DropMappedFields | Mapeia um objeto no documento JSON para uma coluna e remove todos os campos aninhados já referenciados por outros mapeamentos de coluna. | Disponível para JSON tipos de mapeamento , Parquet AVRO e ORC . |
BytesAsBase64 | Trata os dados como matriz de bytes e os converte em uma cadeia de caracteres 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 tipo Avro. Para Avro formato, o campo deve ser uma matriz que contém valores de bytes do intervalo [0-255]. null será ingerido se os dados não representarem uma matriz de bytes válida. |
Exemplos de transformação de mapeamento
DropMappedFields
Transformação:
Considerando o seguinte conteúdo JSON:
{
"Time": "2012-01-15T10:45",
"Props": {
"EventName": "CustomEvent",
"Revenue": 0.456
}
}
O mapeamento de dados a seguir mapeia todo Props
o objeto para uma coluna Props
dinâmica, excluindo colunas já mapeadas (Props.EventName
já mapeadas para a coluna EventName
, portanto, elas são excluídas).
[
{ "Column": "Time", "Properties": { "Path": "$.Time" } },
{ "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
{ "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]
Os dados ingeridos têm a seguinte aparência:
Hora | EventName | Props |
---|---|---|
2012-01-15T10:45 |
CustomEvent |
{"Revenue": 0.456} |
BytesAsBase64
Transformação
Considerando o seguinte conteúdo do arquivo 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 a seguir 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 a seguinte aparência:
Id | Base64EncodedId |
---|---|
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] |
44MiXBxbQUiGigmFMy1oNA== |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de