Funzione from_xml
Si applica a: Databricks SQL Databricks Runtime 14.1 e versioni successive
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Restituisce un valore struct analizzato da xmlStr
utilizzando schema
.
Sintassi
from_xml(xmlStr, schema [, options])
Argomenti
xmlStr
STRING
: espressione che specifica un singolo record XMLschema
STRING
: espressione o chiamata di schema_of_xml funzione.options
: valore letterale facoltativoMAP<STRING,STRING>
che specifica le direttive.
Valori restituiti
Oggetto STRUCT
con nomi di campo e tipi corrispondenti alla definizione dello schema.
xmlStr
deve essere ben formato rispetto a schema
e options
. Se xmlStr
non è possibile analizzare NULL
viene restituito .
schema
deve essere definito come coppie nome colonna delimitato da virgole e tipo di dati come usato in, ad esempio CREATE TABLE
.
options
, se specificato, può essere uno dei seguenti:
excludeAttribute
(impostazione predefinitafalse
): indica se escludere gli attributi negli elementi.mode
(impostazione predefinitaPERMISSIVE
): consente una modalità per gestire i record danneggiati durante l'analisi.PERMISSIVE
: quando soddisfa un record danneggiato, inserisce la stringa in formato non valido in un campo configurato dacolumnNameOfCorruptRecord
e imposta i campi in formato non valido su Null. Per mantenere i record danneggiati, è possibile impostare un campo di tipo stringa denominatocolumnNameOfCorruptRecord
in uno schema definito dall'utente. Se uno schema non dispone del campo, elimina i record danneggiati durante l'analisi. Quando si deduce uno schema, aggiunge in modo implicito uncolumnNameOfCorruptRecord
campo in uno schema di output.FAILFAST
: genera un'eccezione quando soddisfa i record danneggiati.
columnNameOfCorruptRecord
(il valore predefinito è il valore specificato inspark.sql.columnNameOfCorruptRecord
): consente di rinominare il nuovo campo con una stringa in formato non valido creata dallaPERMISSIVE
modalità . In questo modo viene eseguito l'override dispark.sql.columnNameOfCorruptRecord
.inferSchema
(impostazione predefinitatrue
): setrue
, tenta di dedurre un tipo appropriato per ogni attributo risultante, ad esempio un tipo booleano, numerico o data. Sefalse
, tutte le colonne risultanti sono di tipo stringa.prefersDecimal
(impostazione predefinitafalse
): deduce tutti i valori a virgola mobile come tipo decimale. Se i valori non rientrano nel separatore decimale, li deduce come double.attributePrefix
(impostazione predefinita_
): prefisso per gli attributi per distinguere gli attributi dagli elementi. Questo sarà il prefisso per i nomi dei campi. Può essere una stringa vuota.valueTag
(impostazione predefinita_VALUE
): tag usato per i dati di tipo carattere all'interno di elementi che dispongono anche di attributi o elementi figlio.encoding
(UTF-8 predefinito): decodifica i file XML in base al tipo di codifica specificato.ignoreSurroundingSpaces
(impostazione predefinitatrue
): definisce se gli spazi vuoti circostanti dai valori letti devono essere ignorati.rowValidationXSDPath
: percorso di un file XSD usato per convalidare il codice XML per ogni riga singolarmente. Le righe che non riescono a convalidare vengono considerate come gli errori di analisi come sopra. L'XSD non influisce in caso contrario sullo schema fornito o dedotto.ignoreNamespace
(impostazione predefinitafalse
): setrue
, gli spazi dei nomi prefissi per gli elementi e gli attributi XML vengono ignorati. I tag<abc:author>
e<def:author>
, ad esempio, vengono considerati come se entrambi siano solo<author>
. Si noti che gli spazi dei nomi non possono essere ignorati nell'elementorowTag
, ma solo i relativi elementi figlio. Si noti che l'analisi XML è in genere non compatibile con lo spazio dei nomi anche se false.timestampFormat
(impostazione predefinitayyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): imposta la stringa che indica un formato timestamp. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di timestamp.timestampNTZFormat
(impostazione predefinitayyyy-MM-dd'T'HH:mm:ss[.SSS]
): imposta la stringa che indica un timestamp senza formato fuso orario. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo TimestampNTZType.dateFormat
(impostazione predefinitayyyy-MM-dd
): imposta la stringa che indica un formato di data. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo di dati.locale
(il valore predefinito èen-US
): imposta le impostazioni locali come tag di lingua in formato IETF BCP 47. Ad esempio, questo viene usato durante l'analisi di date e timestamp.nullValue
(il valore predefinito ènull
): imposta la rappresentazione di stringa di un valore Null.
Esempi
> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{ "time": "2015-08-26T00:00:00.000+0000"}
> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>',
'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
{"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}