إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
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}]}