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 JSON os tipos de mapeamento , Parquet AVRO e ORC . |
SourceLocation | Nome do artefacto de armazenamento que forneceu os dados, escreva cadeia (por exemplo, o campo "BaseUri" do blob). | Disponível para CSV os tipos de mapeamento , JSON , Parquet , AVRO ORC 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 , AVRO ORC 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 JSON os tipos de mapeamento , Parquet AVRO 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 JSON os tipos de mapeamento , Parquet AVRO e ORC . |
DateTimeFromUnixMicroseconds | Converte o número que representa unix-time (microssegundos desde 1970-01-01) para a cadeia datetime UTC. | Disponível para JSON os tipos de mapeamento , Parquet AVRO e ORC . |
DateTimeFromUnixNanoseconds | Converte o número que representa unix-time (nanossegundos desde 1970-01-01) para a cadeia datetime UTC. | Disponível para JSON os 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 colunas. | Disponível para JSON os tipos de mapeamento , Parquet AVRO 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== |
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários