Share via


Plug-in schema_merge

Unisce le definizioni dello schema tabulare in uno schema unificato.

Si prevede che le definizioni dello schema siano nel formato prodotto dall'operatore getschema .

L'operazione schema merge unisce colonne negli schemi di input e tenta di ridurre i tipi di dati a quelli comuni. Se non è possibile ridurre i tipi di dati, viene visualizzato un errore nella colonna problematica.

Il plug-in viene richiamato con l'operatore evaluate .

Sintassi

T|evaluateschema_merge(PreserveOrder)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
PreserveOrder bool Se impostato su true, indirizza il plug-in per convalidare l'ordine delle colonne come definito dal primo schema tabulare mantenuto. Se la stessa colonna è in più schemi, l'ordinale della colonna deve essere simile al numero ordinale di colonna del primo schema in cui è presente. Il valore predefinito è true.

Restituisce

Il schema_merge plug-in restituisce un output simile a quello getschema restituito dall'operatore.

Esempio

Unisci con uno schema con una nuova colonna aggiunta.

let schema1 = datatable(Uri:string, HttpStatus:int)[] | getschema;
let schema2 = datatable(Uri:string, HttpStatus:int, Referrer:string)[] | getschema;
union schema1, schema2 | evaluate schema_merge()

Output

ColumnName ColumnOrdinal DataType ColumnType
Uri 0 System.String string
HttpStatus 1 System.Int32 INT
Referrer 2 System.String string

Unisci con uno schema con ordinamento di colonne diverso (HttpStatus modifiche ordinali da 1 a 2 nella nuova variante).

let schema1 = datatable(Uri:string, HttpStatus:int)[] | getschema;
let schema2 = datatable(Uri:string, Referrer:string, HttpStatus:int)[] | getschema;
union schema1, schema2 | evaluate schema_merge()

Output

ColumnName ColumnOrdinal DataType ColumnType
Uri 0 System.String string
Referrer 1 System.String string
HttpStatus -1 ERROR(unknown CSL type:ERROR(columns are out of order)) ERROR(le colonne non sono in ordine)

Unisci con uno schema con ordinamento di colonne diverso, ma con PreserveOrder impostato su false.

let schema1 = datatable(Uri:string, HttpStatus:int)[] | getschema;
let schema2 = datatable(Uri:string, Referrer:string, HttpStatus:int)[] | getschema;
union schema1, schema2 | evaluate schema_merge(PreserveOrder = false)

Output

ColumnName ColumnOrdinal DataType ColumnType
Uri 0 System.String string
Referrer 1 System.String string
HttpStatus 2 System.Int32 INT