Condividi tramite


Plug-in schema_merge

Unisce le definizioni dello schema tabulare in uno schema unificato.

È previsto 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| evaluate schema_merge(PreserveOrder)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
PreserveOrder bool Se impostato su true, indirizza il plug-in per convalidare l'ordine di colonna come definito dal primo schema tabulare mantenuto. Se la stessa colonna si trova in diversi schemi, l'ordinale della colonna deve essere simile all'ordinale di colonna del primo schema in cui è apparso. Il valore predefinito è true.

Valori restituiti

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

Esempi

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 Tipo di dati 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 Tipo di dati ColumnType
URI 0 System.String string
Referrer 1 System.String string
HttpStatus -1 ERROR(unknown CSL type:ERROR(columns are out of order)) ERROR(colonne non 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 Tipo di dati ColumnType
URI 0 System.String string
Referrer 1 System.String string
HttpStatus 2 System.Int32 int