Partilhar via


Mapeamento de JSON

Aplica-se a: ✅Microsoft FabricAzure 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:

  1. 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
    
  2. 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