from_json وظيفه

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

إرجاع قيمة بنية مع jsonStr و schema.

بناء الجملة

from_json(jsonStr, schema [, options])

الوسيطات

  • jsonStr: تعبير STRING يحدد مستند json.
  • schema: تعبير STRING أو استدعاء لدالة schema_of_json.
  • options: سلسلة MAP<اختيارية،> سلسلة حرفية تحدد التوجيهات.

jsonStr يجب أن تكون جيدة التكوين فيما يتعلق ب schema و options.

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

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');
 {1,0.8}

> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {2015-08-26 00:00:00}