Condividi tramite


Mapping di inserimento

I mapping di inserimento vengono usati durante l'inserimento per eseguire il mapping dei dati in ingresso alle colonne all'interno delle tabelle.

Esplora dati supporta diversi tipi di mapping, sia orientati alle righe (CSV, JSON, AVRO e W3CLOGFILE) sia orientati alle colonne (Parquet e ORC).

I mapping di inserimento possono essere creati in modo preliminare e possono essere referenziati dal comando di inserimento usando ingestionMappingReference i parametri. Anche se l'inserimento è possibile senza specificare un mapping. Per altre informazioni, vedere Mapping delle identità.

Ogni elemento dell'elenco di mapping viene costruito da tre campi:

Proprietà Richiesto Descrizione
Colonna ✔️ Nome della colonna di destinazione nella tabella.
Datatype Tipo di dati con cui creare la colonna mappata se non esiste già nella tabella.
Proprietà Contenitore delle proprietà contenente proprietà specifiche per ogni mapping, come descritto in ogni pagina specifica del tipo 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.

Tipi di mapping supportati

La tabella seguente definisce i tipi di mapping da utilizzare durante l'inserimento o l'esecuzione di query su dati esterni di un formato specifico.

Formato dati Tipo di mapping
CSV CSV Mapping
TSV CSV Mapping
TSVe CSV Mapping
PSV CSV Mapping
SCSV CSV Mapping
SOHSV CSV Mapping
TXT CSV Mapping
RAW CSV Mapping
JSON JSON Mapping
AVRO AVRO Mapping
APACHEAVRO AVRO Mapping
Parquet Parquet Mapping
ORC ORC Mapping
W3CLOGFILE W3CLOGFILE Mapping

Mapping di identità

L'inserimento è possibile senza specificare ingestionMapping o ingestionMappingReference proprietà. I dati verranno mappati usando un mapping dei dati identity derivato dallo schema della tabella. Lo schema della tabella rimarrà invariato. format deve essere specificata la proprietà . Vedere formati di inserimento.

Tipo di formato Formato Logica di mapping
Formati di dati tabulari con ordine definito di colonne, ad esempio formati delimitatori separati o a riga singola. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Tutte le colonne della tabella vengono mappate nel rispettivo ordine alle colonne di dati nell'ordine in cui vengono visualizzate nell'origine dati. Il tipo di dati della colonna viene ricavato dallo schema della tabella.
Formatta con colonne o record denominati con campi denominati. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Viene eseguito il mapping di tutte le colonne di tabella alle colonne di dati o ai campi di record con lo stesso nome (con distinzione tra maiuscole e minuscole). Il tipo di dati della colonna viene ricavato dallo schema della tabella.

Avviso

Qualsiasi mancata corrispondenza tra lo schema della tabella e la struttura dei dati, ad esempio i tipi di dati di colonna o di campo, i nomi di colonna o di campo o il relativo numero potrebbero generare dati vuoti o non corretti inseriti.

Trasformazioni del mapping

Alcuni dei mapping dei formati di dati (Parquet, JSON e AVRO) supportano trasformazioni semplici e utili in fase di inserimento. Quando lo scenario richiede un'elaborazione più complessa in fase di inserimento, usare i criteri di aggiornamento, che consentono di definire l'elaborazione leggera usando l'espressione KQL.

Trasformazione dipendente dal percorso Descrizione Condizioni
PropertyBagArrayToDictionary Trasforma la matrice JSON di proprietà, ad esempio {events:[{"n1":"v1"},{"n2":"v2"}]}, in dizionario e la serializza in un documento JSON valido, ad esempio {"n1":"v1","n2":"v2"}. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
SourceLocation Nome dell'artefatto di archiviazione che ha fornito i dati, la stringa di tipo (ad esempio, il campo "BaseUri" del BLOB). Disponibile per CSVi tipi di mapping , JSONParquet, AVRO, ORC e W3CLOGFILE .
SourceLineNumber Offset relativo all'artefatto di archiviazione, tipo long (a partire da '1' e incremento per ogni nuovo record). Disponibile per CSVi tipi di mapping , JSONParquet, AVRO, ORC e W3CLOGFILE .
DateTimeFromUnixSeconds Converte il numero che rappresenta unix-time (secondi dal 1970-01-01) alla stringa datetime UTC. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
DateTimeFromUnixMilliseconds Converte il numero che rappresenta unix-time (millisecondi dal 1970-01-01) alla stringa datetime UTC. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
DateTimeFromUnixMicroseconds Converte il numero che rappresenta unix-time (microsecondi dal 1970-01-01) alla stringa datetime UTC. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
DateTimeFromUnixNanoseconds Converte il numero che rappresenta unix-time (nanosecondi dal 1970-01-01) alla stringa datetime UTC. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
DropMappedFields Esegue il mapping di un oggetto nel documento JSON a una colonna e rimuove tutti i campi annidati già a cui fanno riferimento altri mapping di colonne. Disponibile per JSONi tipi di mapping , ParquetAVRO e ORC .
ByteAsBase64 Considera i dati come matrice di byte e li converte in una stringa con codifica Base64. Disponibile per AVRO il tipo di mapping. Per ApacheAvro il formato, il tipo di schema del campo dati mappato deve essere bytes o fixed tipo Avro. Per Avro il formato, il campo deve essere una matrice contenente valori di byte compresi nell'intervallo [0-255]. null viene inserito se i dati non rappresentano una matrice di byte valida.

Esempi di trasformazione mapping

DropMappedFields trasformazione:

Dato il contenuto JSON seguente:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

Il mapping dei dati seguente esegue il mapping dell'intero Props oggetto nella colonna Props dinamica, escludendo le colonne già mappate (Props.EventName è già mappato alla colonna EventName, quindi viene escluso).

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

I dati inseriti sono i seguenti:

Time EventName Proprietà
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 trasformazione

Dato il contenuto del file AVRO seguente:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

Il mapping dei dati seguente esegue il mapping della colonna ID due volte, con e senza la trasformazione .

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

I dati inseriti sono i seguenti:

ID. Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==