Mapeamento de JSON
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer
Use o mapeamento JSON para mapear dados de entrada para colunas dentro de tabelas quando o arquivo de origem de ingestão estiver no formato JSON.
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 JSON deve conter uma das seguintes propriedades opcionais:
Propriedade | Type | Descrição |
---|---|---|
Caminho | string |
Se o valor começar com $ , ele será interpretado como o caminho JSON para o campo no documento JSON que se tornará o conteúdo da coluna na tabela. O caminho JSON que denota todo o documento é $ . Se o valor não começar com $ , ele será interpretado como um valor constante. Os caminhos JSON que incluem caracteres especiais deverão ter um escape 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 JSON. |
Transformação | string |
Transformação que deve ser aplicada no conteúdo com transformações de mapeamento. |
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.
Exemplos
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"Column": "source_uri", "Properties": {"Transform": "SourceLocation"}},
{"Column": "source_line", "Properties": {"Transform": "SourceLineNumber"}},
{"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 = "json",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
{"Column": "column_b", "Properties": {"Path": "$.Property"}},
{"Column": "custom_column", "Properties": {"Path": "$.[\'Property 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="json",
ingestionMappingReference = "Mapping_Name"
)
Mapeamento de identidade
Use o mapeamento JSON durante a ingestão sem definir um esquema de mapeamento (consulte mapeamento de identidade).
.ingest into Table123 (@"source1", @"source2")
with
(
format="json"
)
Copiando o mapeamento JSON
Você pode copiar o mapeamento JSON de uma tabela existente e criar uma nova tabela com o mesmo mapeamento usando o seguinte processo:
Execute o seguinte comando na tabela cujo mapeamento você deseja copiar:
.show table TABLENAME ingestion json mappings | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'") | project formatted_mapping
Use a saída do comando acima para criar uma nova tabela com o mesmo mapeamento:
.create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD