Condividi tramite


Mapping JSON

Si applica a: ✅Microsoft FabricAzure Esplora dati

Usare il mapping JSON per eseguire il mapping dei dati in ingresso alle colonne all'interno di tabelle quando il file di origine di inserimento è in formato JSON.

Ogni elemento nell'elenco di mapping definisce il mapping per una colonna specifica. Questi elementi vengono costruiti da tre proprietà: column, datatypee properties. Altre informazioni sono disponibili nella panoramica dei mapping dei dati.

Ogni elemento di mapping JSON deve contenere una delle proprietà facoltative seguenti:

Proprietà Type Descrizione
Percorso string Se il valore inizia con $ viene interpretato come percorso JSON del campo nel documento JSON che diventerà il contenuto della colonna nella tabella. Il percorso JSON che indica l'intero documento è $. Se il valore non inizia con $ viene interpretato come valore costante. I percorsi JSON che includono caratteri speciali devono essere preceduti da caratteri di escape come ['Nome proprietà']. Per altre informazioni, vedere sintassi JSONPath.
ConstValue string Valore costante da usare per una colonna invece di un valore all'interno del file JSON.
Trasformazione string Trasformazione che deve essere applicata al contenuto con trasformazioni di mapping.

Importante

Per l'inserimento in coda:

  • Se la tabella a cui viene fatto riferimento nel mapping non esiste nel database, viene creata automaticamente, dato che per tutte le colonne vengono specificati tipi di dati validi.
  • Se una colonna a cui si fa riferimento nel mapping non esiste nella tabella, viene aggiunta automaticamente alla tabella come ultima colonna alla prima inserimento dei dati per tale colonna, dato che per la colonna viene specificato un tipo di dati valido. Per aggiungere nuove colonne a un mapping, usare il comando di mapping dell'inserimento con estensione alter.
  • I dati vengono inseriti in batch usando le proprietà di inserimento. Le proprietà di mapping di inserimento più distinte usate, ad esempio valori ConstValue diversi, diventano più frammentate l'inserimento, il che può causare una riduzione delle prestazioni.

Esempi

[
  {"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": "$"}}
]

Il mapping precedente viene serializzato come stringa JSON quando viene fornito come parte del .ingest comando di gestione.

.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\']"}}
      ]
      ```
  )

Mapping già creato

Quando il mapping viene creato in modo preliminare, fare riferimento al mapping in base al .ingest nome nel comando di gestione.

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json",
        ingestionMappingReference = "Mapping_Name"
    )

Mapping di identità

Usare il mapping JSON durante l'inserimento senza definire uno schema di mapping (vedere Mapping delle identità).

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json"
    )

Copia del mapping JSON

È possibile copiare il mapping JSON di una tabella esistente e creare una nuova tabella con lo stesso mapping usando il processo seguente:

  1. Eseguire il comando seguente nella tabella di cui si vuole copiare il mapping:

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. Usare l'output del comando precedente per creare una nuova tabella con lo stesso mapping:

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD