مشاركة عبر


from_xml دالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 14.1 وما فوق

هام

هذه الميزة في المعاينة العامة.

إرجاع قيمة بنية تم تحليلها من xmlStr باستخدام schema.

بناء الجملة

from_xml(xmlStr, schema [, options])

الوسيطات

  • xmlStrSTRING: تعبير يحدد سجل XML واحدا
  • schemaSTRING: تعبير أو استدعاء لدالة schema_of_xml.
  • options: توجيه تحديد حرفي اختياري MAP<STRING,STRING> .

المرتجعات

مع STRUCT أسماء الحقول وأنواع مطابقة لتعريف المخطط.

xmlStr يجب أن تكون جيدة التكوين فيما يتعلق ب schema و options. إذا xmlStr تعذر تحليل NULL يتم إرجاع.

schema يجب تعريفه على أنه اسم عمود مفصول بفواصل وأزواج أنواع البيانات كما هو مستخدم في على سبيل المثال CREATE TABLE.

options، إذا تم توفيره، يمكن أن يكون أي مما يلي:

  • excludeAttribute (افتراضي false): ما إذا كان سيتم استبعاد السمات في العناصر.
  • mode (الافتراضي PERMISSIVE): يسمح بوضع للتعامل مع السجلات التالفة أثناء التحليل.
    • PERMISSIVE: عندما يفي بسجل تالف، يضع السلسلة التي تم تكوينها بشكل غير سليم في حقل تم تكوينه بواسطة ، ويعين الحقول التي تم تكوينها columnNameOfCorruptRecordبشكل غير سليم إلى قيمة خالية. للاحتفاظ بالسجلات التالفة، يمكنك تعيين حقل نوع سلسلة يسمى columnNameOfCorruptRecord في مخطط معرف من قبل المستخدم. إذا لم يكن المخطط يحتوي على الحقل، فإنه يسقط سجلات تالفة أثناء التحليل. عند الاستدلال على مخطط، فإنه يضيف ضمنيا حقلا columnNameOfCorruptRecord في مخطط إخراج.
    • FAILFAST: يطرح استثناء عندما يفي بالسجلات التالفة.
  • columnNameOfCorruptRecord (الافتراضي هو القيمة المحددة في spark.sql.columnNameOfCorruptRecord): يسمح بإعادة تسمية الحقل الجديد الذي يحتوي على سلسلة مشوهة تم إنشاؤها بواسطة PERMISSIVE الوضع. هذا يتجاوز spark.sql.columnNameOfCorruptRecord.
  • inferSchema (افتراضي true): إذا true، يحاول استنتاج نوع مناسب لكل سمة ناتجة، مثل نوع منطقي أو رقمي أو تاريخ. إذا كانت falseجميع الأعمدة الناتجة من نوع السلسلة.
  • prefersDecimal (افتراضي false): يستنتج جميع قيم الفاصلة العائمة كنوع عشري. إذا لم تتلاءم القيم مع الرقم العشري، فإنها تستنتجها على أنها مزدوجة.
  • attributePrefix (افتراضي _): بادئة السمات لتمييز السمات عن العناصر. ستكون هذه هي بادئة أسماء الحقول. يمكن أن تكون سلسلة فارغة.
  • valueTag (افتراضي _VALUE): العلامة المستخدمة لبيانات الأحرف داخل العناصر التي تحتوي أيضا على السمة (السمات) أو عناصر العناصر التابعة.
  • encoding (UTF-8 الافتراضي): فك ترميز ملفات XML حسب نوع الترميز المحدد.
  • ignoreSurroundingSpaces (افتراضي true): يحدد ما إذا كان يجب تخطي المسافات البيضاء المحيطة من القيم التي تتم قراءتها.
  • rowValidationXSDPath: المسار إلى ملف XSD المستخدم للتحقق من صحة XML لكل صف على حدة. يتم التعامل مع الصفوف التي تفشل في التحقق من صحتها مثل أخطاء التحليل كما هو موضح أعلاه. لا يؤثر XSD على المخطط المقدم أو المستنتج.
  • ignoreNamespace (افتراضي false): إذا true، يتم تجاهل بادئات مساحات الأسماء على عناصر XML والسمات. سيتم التعامل مع العلامات <abc:author> و <def:author> ، على سبيل المثال، كما لو كان كلاهما فقط <author>. لاحظ أنه لا يمكن تجاهل مساحات الأسماء على rowTag العنصر، فقط التوابع الخاصة به. لاحظ أن تحليل XML غير مدرك بشكل عام لمساحة الاسم حتى لو كان خطأ.
  • timestampFormat (افتراضي yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): يعين السلسلة التي تشير إلى تنسيق الطابع الزمني. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع الطابع الزمني.
  • timestampNTZFormat (افتراضي yyyy-MM-dd'T'HH:mm:ss[.SSS]): يعين السلسلة التي تشير إلى طابع زمني بدون تنسيق المنطقة الزمنية. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع TimestampNTZType.
  • dateFormat (افتراضي yyyy-MM-dd): يعين السلسلة التي تشير إلى تنسيق تاريخ. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع التاريخ.
  • locale (الافتراضي هو en-US): يعين الإعدادات المحلية كعلامة لغة بتنسيق IETF BCP 47. على سبيل المثال، يتم استخدام هذا أثناء تحليل التواريخ والطوابع الزمنية.
  • nullValue (الافتراضي هو null): تعيين تمثيل السلسلة لقيمة خالية.

الأمثلة

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