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}