Share via


Funzione from_xml

Si applica a:check marked yes Databricks SQL check marked yes Databricks Runtime 14.1 e versioni successive

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Restituisce un valore dello struct analizzato dall'oggetto xmlStr utilizzando schema.

Sintassi

from_xml(xmlStr, schema [, options])

Argomenti

  • xmlStrSTRING: espressione che specifica un singolo record XML
  • schemaSTRING: espressione o chiamata di schema_of_xml funzione.
  • options: valore letterale facoltativo MAP<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 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 impostare un campo di tipo stringa denominato columnNameOfCorruptRecord 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 un columnNameOfCorruptRecord campo in uno schema di output.
    • FAILFAST: genera un'eccezione quando soddisfa i record danneggiati.
  • columnNameOfCorruptRecord (il valore predefinito è il valore specificato in spark.sql.columnNameOfCorruptRecord): consente di rinominare il nuovo campo con una stringa in formato non valido creata dalla PERMISSIVE modalità . 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, tutte le colonne risultanti sono di tipo stringa.
  • prefersDecimal (impostazione predefinita false): 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 predefinita true): 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 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 (impostazione predefinita yyyy-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 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 data.
  • 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}]}