Condividi tramite


Funzione from_xml

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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 XML
  • schema STRING: espressione o chiamata di schema_of_xml funzione.
  • options: valore letterale facoltativo MAP<STRING,STRING> che specifica le direttive.

Valori restituiti

Un STRUCT con nomi di campo e tipi corrispondenti alla definizione di 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 e tipo di dati delimitate da column virgole, ad esempio CREATE TABLE.

options, se specificato, può essere uno dei seguenti:

  • excludeAttribute (impostazione predefinita false): indica se escludere gli attributi negli elementi.
  • mode (impostazione predefinita PERMISSIVE): 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 da columnNameOfCorruptRecorde imposta i campi in formato non valido su Null. Per mantenere i record danneggiati, è possibile set un campo di tipo stringa denominato columnNameOfCorruptRecord in un schemadefinito dall'utente. Se un schema non dispone del campo, elimina i record danneggiati durante l'analisi. Quando si deduce un schema, aggiunge implicitamente un campo columnNameOfCorruptRecord nell'output schema.
    • FAILFAST: genera un'eccezione quando soddisfa i record danneggiati.
  • columnNameOfCorruptRecord (valore predefinito è quello specificato in spark.sql.columnNameOfCorruptRecord): consente di rinominare il nuovo campo having, stringa malformata creata dalla modalità PERMISSIVE. In questo modo viene eseguito l'override di spark.sql.columnNameOfCorruptRecord.
  • inferSchema (impostazione predefinita true): se true, tenta di dedurre un tipo appropriato per ogni attributo risultante, ad esempio un tipo booleano, numerico o data. Se false, tutti i columns risultanti sono di tipo stringa.
  • prefersDecimal (falsepredefinita): interpreta tutti i numeri a virgola mobile values come tipo decimale. Se il values non rientra in decimale, li interpreta come doppi.
  • 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 (truepredefinita): definisce se gli spazi bianchi circostanti in values devono essere saltati.
  • 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 ha altri effetti sul schema dedotto o fornito.
  • ignoreNamespace (impostazione predefinita false): se true, 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'elemento rowTag , 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 predefinita yyyy-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 (yyyy-MM-dd'T'HH:mm:ss[.SSS]predefinita): imposta la stringa che indica un timestamp senza il formato timezone. I formati di data personalizzati seguono i formati in base ai modelli Datetime. Questo vale per il tipo TimestampNTZType.
  • dateFormat (impostazione predefinita yyyy-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}]}