إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
إرجاع قيمة بنية مع jsonStr و schema.
بناء الجملة
from_json(jsonStr, schema [, options])
الوسيطات
jsonStrSTRING: تعبير يحدد مستند json.schemaSTRING: تعبير أو استدعاء لدالة schema_of_json.options: توجيه تحديد حرفي اختياريMAP<STRING,STRING>.
jsonStr يجب أن تكون جيدة التكوين فيما يتعلق ب schema و options.
schema يجب تعريفها على أنها أسماء أعمدة مفصولة بفواصل وأزواج أنواع البيانات، على غرار التنسيق المستخدم في CREATE TABLE.
قبل Databricks Runtime 12.2 schema يجب أن يكون حرفيا.
إشعار
أسماء الأعمدة والحقول في schema حساسة لحالة الأحرف ويجب أن تتطابق مع الأسماء في jsonStr بالضبط.
لتعيين حقول JSON التي تختلف فقط في حالة، يمكنك تحويل البنية الناتجة إلى أسماء حقول مميزة.
راجع الأمثلة لمزيد من التفاصيل.
options، إذا تم توفيره، يمكن أن يكون أي مما يلي:
primitivesAsString(افتراضيfalse): يستنتج جميع القيم الأولية كنوع سلسلة.prefersDecimal(افتراضيfalse): يستنتج جميع قيم الفاصلة العائمة كنوع عشري. إذا لم تتلاءم القيم مع الرقم العشري، فإنها تستنتجها على أنها مزدوجة.allowComments(الافتراضيfalse): يتجاهل تعليق نمط Java وC++ في سجلات JSON.allowUnquotedFieldNames(الافتراضيfalse): يسمح بأسماء حقول JSON غير المدرجة.allowSingleQuotes(الافتراضيtrue): يسمح بعلامات اقتباس مفردة بالإضافة إلى علامات الاقتباس المزدوجة.allowNumericLeadingZeros(الافتراضيfalse): يسمح بالأصفار البادئة بالأرقام (على سبيل المثال،00012).allowBackslashEscapingAnyCharacter(الافتراضيfalse): يسمح بقبول اقتباس كل الأحرف باستخدام آلية اقتباس مائلة عكسية.allowUnquotedControlChars(الافتراضيfalse): يسمح لسلاسل JSON بتضمين أحرف تحكم غير مدرجة (أحرف ASCII بقيمة أقل من 32، بما في ذلك أحرف الجدولة وموجز الأسطر) أم لا.mode(الافتراضيPERMISSIVE): يسمح بوضع للتعامل مع السجلات التالفة أثناء التحليل.PERMISSIVE: عندما يفي بسجل تالف، يضع السلسلة التي تم تكوينها بشكل غير سليم في حقل تم تكوينه بواسطة ، ويعين الحقول التي تم تكوينهاcolumnNameOfCorruptRecordبشكل غير سليم إلى قيمة خالية. للاحتفاظ بالسجلات التالفة، يمكنك تعيين حقل نوع سلسلة يسمىcolumnNameOfCorruptRecordفي مخطط معرف من قبل المستخدم. إذا لم يكن المخطط يحتوي على الحقل، فإنه يسقط سجلات تالفة أثناء التحليل. عند الاستدلال على مخطط، فإنه يضيف ضمنيا حقلاcolumnNameOfCorruptRecordفي مخطط إخراج.FAILFAST: يطرح استثناء عندما يفي بالسجلات التالفة.
columnNameOfCorruptRecord(الافتراضي هو القيمة المحددة فيspark.sql.columnNameOfCorruptRecord): يسمح بإعادة تسمية الحقل الجديد الذي يحتوي على سلسلة مشوهة تم إنشاؤها بواسطةPERMISSIVEالوضع. هذا يتجاوزspark.sql.columnNameOfCorruptRecord.dateFormat(افتراضيyyyy-MM-dd): يعين السلسلة التي تشير إلى تنسيق تاريخ. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع التاريخ.timestampFormat(افتراضيyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): يعين السلسلة التي تشير إلى تنسيق الطابع الزمني. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع الطابع الزمني.multiLine(افتراضيfalse): يوزع سجلا واحدا، والذي قد يمتد عبر أسطر متعددة، لكل ملف.encoding(بشكل افتراضي لم يتم تعيينه): يسمح بتعيين أحد الترميزات الأساسية أو الموسعة القياسية لملفات JSON بالقوة. على سبيل المثال UTF-16BE، UTF-32LE. إذا لم يتم تحديد الترميز وتمmultiLineتعيينه إلىtrue، يتم اكتشافه تلقائيا.lineSep(الافتراضي يغطي كل\r،\r\nو\n): يحدد فاصل الأسطر الذي يجب استخدامه لتحليل.samplingRatio(الافتراضي 1.0): يحدد جزء من عناصر الإدخال JSON المستخدمة لاستدلال المخطط.dropFieldIfAllNull(افتراضيfalse): ما إذا كنت تريد تجاهل عمود كافة القيم الخالية أو صفيف/بنية فارغة أثناء استدلال المخطط.locale(الافتراضي هوen-US):setsالإعدادات المحلية كعلامة لغة بتنسيق IETF BCP 47. على سبيل المثال، يتم استخدام هذا أثناء تحليل التواريخ والطوابع الزمنية.allowNonNumericNumbers(الافتراضيtrue): يسمح لموزع JSON بالتعرف على مجموعة من الرموز المميزة غير الرقمية (NaN) كقيم أرقام عائمة قانونية:+INFللنهاية الإيجابية، بالإضافة إلى الاسم المستعار ل+InfinityوInfinity.-INFللنهاية السالبة)، الاسم المستعار-Infinity.NaNلغيرها من الأرقام، مثل نتيجة القسمة على صفر.
readerCaseSensitive(الافتراضيtrue): يحدد سلوك حساسية الحالة عندrescuedDataColumnتمكينه. إذا كان صحيحا، فانقاذ أعمدة البيانات التي تختلف أسماؤها حسب الحالة عن المخطط؛ وإلا، اقرأ البيانات بطريقة غير حساسة لحالة الأحرف. متوفر في Databricks SQL وDatabricks Runtime 13.3 LTS وما فوق.
المرتجعات
بنية بأسماء الحقول وأنواع مطابقة لتعريف المخطط.
الأمثلة
> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}
> SELECT from_json('{"datetime":"26/08/2015"}', 'datetime Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"datetime":2015-08-26 00:00:00}
-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
{"a":1, "b":0.8}