from_xml işlev

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 14.1 ve üzeri

Önemli

Bu özellik Genel Önizlemededir.

xmlStr ve schema kullanılarak ayrıştırılan bir yapı veya değişken değeri döndürür.

Söz dizimi

from_xml(xmlStr, schema [, options])

Argümanlar

  • xmlStr: Tek STRING bir XML kaydı belirten ifade
  • schema: STRING işlev çağrısı veya ifadesischema_of_xml.
  • options: İsteğe bağlı MAP<STRING,STRING> değişmez değer belirtme yönergeleri.

İadeler

Bir STRUCT alan adları ve türleri şema tanımıyla eşleşen veya şema tek bir VARIANT türse bir Variant değeri.

xmlStr'nin schema ve options ile ilgili olarak düzgün biçimlendirilmiş olması gerekir. Ayrıştırılamıyorsa xmlStrNULL döndürülür.

schema içinde kullanıldığı gibi virgülle ayrılmış sütun adı ve veri türü çiftleri olarak tanımlanmalıdır, örneğin CREATE TABLE. Databricks Runtime 16.4 ve üzeri sürümlerinde, schema tek bir VARIANT türü olarak da tanımlanabilir.

optionssağlanmışsa aşağıdakilerden biri olabilir:

  • excludeAttribute (varsayılan false): Öğelerdeki özniteliklerin dışlanıp dışlanmayacağı.
  • mode (varsayılan PERMISSIVE): ayrıştırma sırasında bozuk kayıtlarla ilgilenmek için bir moda izin verir.
    • PERMISSIVE: bozuk bir kaydı karşıladığında, hatalı biçimlendirilmiş dizeyi tarafından columnNameOfCorruptRecordyapılandırılan bir alana yerleştirir ve hatalı biçimlendirilmiş alanları null olarak ayarlar. Bozuk kayıtları tutmak için, kullanıcı tanımlı şemada columnNameOfCorruptRecord adlı bir dize türü alanı ayarlayabilirsiniz. Bir şemanın alanı yoksa, ayrıştırma sırasında bozuk kayıtları bırakır. Bir şema çıkarıldığında, bir çıktı şemasına örtük olarak bir columnNameOfCorruptRecord alanı ekler.
    • FAILFAST: bozuk kayıtlarla karşılaştığında bir hata fırlatır.
  • columnNameOfCorruptRecord (varsayılan değer spark.sql.columnNameOfCorruptRecord' de belirtilen değerdir): PERMISSIVE modu tarafından oluşturulan hatalı biçimlendirilmiş dizeye sahip yeni alanın yeniden adlandırılmasına izin verir. Bu, spark.sql.columnNameOfCorruptRecord öğesini geçersiz kılar.
  • inferSchema (varsayılan true): if ise true, elde edilen her öznitelik için boole, sayısal veya tarih türü gibi uygun bir tür çıkarsamaya çalışır. falseise, sonuçta elde edilen tüm sütunlar dize türündedir.
  • prefersDecimal (varsayılan false): tüm kayan nokta değerlerini ondalık tür olarak çıkarsar. Değerler ondalık değere sığmıyorsa, bunları çift olarak çıkarsar.
  • attributePrefix (varsayılan _): Öznitelikleri öğelerden ayırt etmek için özniteliklere yönelik ön ek. Bu, alan adları için ön ek olacaktır. Boş bir dize olabilir.
  • valueTag (varsayılan _VALUE): Öznitelikleri veya alt öğeleri de olan öğeler içindeki karakter verileri için kullanılan etiket.
  • encoding (varsayılan UTF-8): XML dosyalarını belirtilen kodlama türüne göre çözer.
  • ignoreSurroundingSpaces (varsayılan true): Okunan değerlerden gelen çevre boşluklarının atlanıp atlanmayacağını tanımlar.
  • rowValidationXSDPath: Her satırın XML'sini ayrı ayrı doğrulamak için kullanılan bir XSD dosyasının yolu. Doğrulanemeyen satırlar yukarıdaki gibi ayrıştırma hataları olarak değerlendirilir. XSD, sağlanan veya çıkarılmış şemayı başka bir şekilde etkilemez.
  • ignoreNamespace (varsayılan false): Eğer true ise, XML öğeleri ve özniteliklerindeki ad alanı ön ekleri yoksayılır. Etiketler <abc:author> ve <def:author> örneğin, her ikisi de yalnızca <author>gibi ele alınmalıdır. Ad alanlarının rowTag öğesinde yoksayılamayacağını, yalnızca alt öğelerinde yoksayılabileceğini unutmayın. XML ayrıştırma işleminin yanlış olsa bile genel olarak ad alanının farkında olmadığını unutmayın.
  • timestampFormat (varsayılan yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): zaman damgası biçimini gösteren dizeyi ayarlar. Özel tarih biçimleri Tarih saat desenleri'ndeki biçimleri izler. Bu, zaman damgası türü için geçerlidir.
  • timestampNTZFormat (varsayılan yyyy-MM-dd'T'HH:mm:ss[.SSS]): saat dilimi biçimi olmayan bir zaman damgasını gösteren dizeyi ayarlar. Özel tarih biçimleri Tarih saat desenleri'ndeki biçimleri izler. Bu, TimestampNTZType türü için geçerlidir.
  • dateFormat (varsayılan yyyy-MM-dd): tarih biçimini gösteren dizeyi ayarlar. Özel tarih biçimleri Tarih saat desenleri'ndeki biçimleri izler. Bu, tarih türü için geçerlidir.
  • locale (varsayılan en-US): IETF BCP 47 formatında dil etiketi olarak bir yerel ayar belirler. Örneğin, tarihler ve zaman damgaları ayrıştırılırken bu kullanılır.
  • nullValue (varsayılan değer): nullNull değerin dize gösterimini ayarlar.

mode seçeneği FAILFAST olarak ayarlandığında, giriş şemaya uymuyorsa Azure Databricks MALFORMED_RECORD_IN_PARSING oluşturur.

Yaygın hata koşulları

Örnekler

> 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}]}

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'VARIANT');
 {"p":{"a":1,"b":0.8}}

> SELECT from_xml('not xml', 'a INT', map('mode', 'FAILFAST'));
  Error: MALFORMED_RECORD_IN_PARSING