إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
إرجاع قيمة بنية مع csvStr و schema.
بناء الجملة
from_csv(csvStr, schema [, options])
الوسيطات
csvStr: تعبير STRING يحدد صفا من بيانات CSV.schema: سلسلة حرفية أو استدعاء لدالة schema_of_csv.options: سلسلة MAP<اختيارية،> سلسلة حرفية تحدد التوجيهات.
المرتجعات
بنية مع أسماء الحقول وأنواع مطابقة لتعريف المخطط.
csvStr يجب أن تكون جيدة التكوين فيما يتعلق ب schema و options.
schema يجب تعريفه على أنه اسم عمود مفصول بفواصل وأزواج أنواع البيانات كما هو مستخدم في على سبيل المثال CREATE TABLE.
options، إذا تم توفيره، يمكن أن يكون أي مما يلي:
sep(افتراضي,): يعين فاصلا لكل حقل وقيمة. يمكن أن يكون هذا الفاصل حرفا واحدا أو أكثر.encoding(UTF-8 الافتراضي): فك ترميز ملفات CSV حسب نوع الترميز المحدد.quote(افتراضي"): يعين حرفا واحدا يستخدم للهروب من القيم المقتبسة حيث يمكن أن يكون الفاصل جزءا من القيمة. إذا كنت ترغب في إيقاف تشغيل الاقتباسات، فأنت بحاجة إلى تعيين ليس فارغا ولكن سلسلة فارغة. يختلف هذا السلوك عنcom.databricks.spark.csv.escape(افتراضي\): يعين حرفا واحدا يستخدم للهروب من علامات الاقتباس داخل قيمة مقتبسة بالفعل.charToEscapeQuoteEscaping(افتراضيescapeأو\0): يعين حرفا واحدا يستخدم للهروب من الهروب لحرف الاقتباس. القيمة الافتراضية هي حرف الإلغاء عندماescapeتكون الأحرف مختلفةquote،\0وإلا.comment(سلسلة فارغة افتراضية): يعين حرفا واحدا يستخدم لتخطي الأسطر التي تبدأ بهذا الحرف. يتم تعطيله في الوضع الافتراضي.- العنوان (الافتراضي
false): يستخدم السطر الأول كأسماء أعمدة. enforceSchema(افتراضيtrue): إذا تم تعيينه إلى صحيح، يتم تطبيق المخطط المحدد أو المستنتج قسرا على ملفات مصدر البيانات، ويتم تجاهل الرؤوس في ملفات CSV. إذا تم تعيين الخيار إلى خطأ، يتم التحقق من صحة المخطط مقابل كافة الرؤوس في ملفات CSV في الحالة عند تعيين خيار العنوان إلى صحيح. يتم تحديد أسماء الحقول في أسماء المخططات والأعمدة في رؤوس CSV بواسطة مواضعها مع مراعاةspark.sql.caseSensitive. على الرغم من أن القيمة الافتراضية صحيحة، فمن المستحسن تعطيل خيار enforceSchema لتجنب النتائج غير الصحيحة.inferSchema(الافتراضيfalse): يستنتج مخطط الإدخال تلقائيا من البيانات. يتطلب تمرير إضافي واحد عبر البيانات.samplingRatio(الافتراضي 1.0): يحدد جزء من الصفوف المستخدمة لاستدلال المخطط.ignoreLeadingWhiteSpace(افتراضيfalse): علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء البادئة من القيم التي تتم قراءتها أم لا.ignoreTrailingWhiteSpace(افتراضيfalse): علامة تشير إلى ما إذا كان يجب تخطي المسافات البيضاء اللاحقة من القيم التي تتم قراءتها أم لا.nullValue(سلسلة فارغة افتراضية): يعين تمثيل السلسلة لقيمة خالية.emptyValue(سلسلة فارغة افتراضية): يعين تمثيل السلسلة لقيمة فارغة.nanValue(افتراضيNaN): يعين تمثيل السلسلة لقيمة غير رقمية.positiveInf(افتراضيInf): يعين تمثيل السلسلة لقيمة لا نهاية موجبة.negativeInf(الافتراضي-Inf): يعين تمثيل السلسلة لقيمة اللانهاية السالبة.dateFormat(افتراضيyyyy-MM-dd): يعين السلسلة التي تشير إلى تنسيق تاريخ. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع التاريخ.timestampFormat(افتراضيyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): يعين السلسلة التي تشير إلى تنسيق الطابع الزمني. تتبع تنسيقات التاريخ المخصصة التنسيقات في أنماط التاريخ والوقت. ينطبق هذا على نوع الطابع الزمني.maxColumns(افتراضي20480): يحدد الحد الثابت لعدد الأعمدة التي يمكن أن يحتويها السجل.maxCharsPerColumn(الافتراضي -1): يحدد الحد الأقصى لعدد الأحرف المسموح به لأي قيمة محددة تتم قراءتها. بشكل افتراضي، هو -1 يعني طولا غير محدودunescapedQuoteHandling(الافتراضيSTOP_AT_DELIMITER): يحدد كيفية تعامل محلل CSV مع القيم بعلامات اقتباس غير مغلفة.STOP_AT_CLOSING_QUOTE: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، قم بتجميع حرف الاقتباس ومتابعة تحليل القيمة كقيمة مقتبسة، حتى يتم العثور على اقتباس إغلاق.BACK_TO_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، ففكر في القيمة كقيمة غير مقتبسة. سيؤدي ذلك إلى تجميع المحلل لكافة أحرف القيمة الحالية التي تم تحليلها حتى يتم العثور على المحدد. إذا لم يتم العثور على محدد في القيمة، فسيستمر المحلل في تجميع الأحرف من الإدخال حتى يتم العثور على محدد أو نهاية سطر.STOP_AT_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، ففكر في القيمة كقيمة غير مقتبسة. سيؤدي هذا إلى جعل المحلل يتراكم جميع الأحرف حتى يتم العثور على المحدد أو نهاية السطر في الإدخال.STOP_AT_DELIMITER: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال، يتم تخطي المحتوى الذي تم تحليله للقيمة المحددة ويتم إنتاج القيمة التي تم تعيينها فيnullValueبدلا من ذلك.RAISE_ERROR: إذا تم العثور على علامات اقتباس غير مغلفة في الإدخال،TextParsingExceptionيتم طرح .
mode(الافتراضيPERMISSIVE): يسمح بوضع للتعامل مع السجلات التالفة أثناء التحليل. وهو يدعم الأوضاع التالية غير الحساسة لحالة الأحرف. يحاول Spark تحليل الأعمدة المطلوبة فقط في CSV ضمن تقليم الأعمدة. لذلك، يمكن أن تختلف السجلات التالفة استنادا إلى مجموعة الحقول المطلوبة. يمكن التحكم في هذا السلوك بواسطةspark.sql.csv.parser.columnPruning.enabled(ممكن افتراضيا).PERMISSIVE: عندما يفي بسجل تالف، يضع السلسلة التي تم تكوينها بشكل غير سليم في حقل تم تكوينه بواسطة ، ويعين الحقول التي تم تكوينهاcolumnNameOfCorruptRecordبشكل غير سليم إلى قيمة خالية. للاحتفاظ بالسجلات التالفة، يمكن للمستخدم تعيين حقل نوع سلسلة يسمى columnNameOfCorruptRecord في مخطط معرف من قبل المستخدم. إذا لم يكن المخطط يحتوي على الحقل، فإنه يسقط سجلات تالفة أثناء التحليل. السجل الذي يحتوي على عدد أقل أو أكثر من الرموز المميزة من المخطط ليس سجلا تالفا ل CSV. عندما يستوفي سجلا يحتوي على رموز مميزة أقل من طول المخطط، يعين خالية إلى حقول إضافية. عندما يحتوي السجل على رموز مميزة أكثر من طول المخطط، فإنه يسقط رموزا مميزة إضافية.FAILFAST: يطرح استثناء عندما يفي بالسجلات التالفة.
columnNameOfCorruptRecord(الافتراضي هو القيمة المحددة فيspark.sql.columnNameOfCorruptRecord): يسمح بإعادة تسمية الحقل الجديد الذي يحتوي على سلسلة مشوهة تم إنشاؤها بواسطةPERMISSIVEالوضع. هذا يتجاوزspark.sql.columnNameOfCorruptRecord.multiLine(افتراضيfalse): توزيع سجل واحد، والذي قد يمتد عبر أسطر متعددة.locale(افتراضيen-US): يعين الإعدادات المحلية كعلامة لغة بتنسيق IETF BCP 47. على سبيل المثال، يتم استخدام هذا أثناء تحليل التواريخ والطوابع الزمنية.lineSep(الافتراضي يغطي جميع\rو\r\nو\n): يحدد فاصل الأسطر الذي يجب استخدامه لتحليله. الحد الأقصى للطول هو حرف 1.pathGlobFilter: نمط glob اختياري لتضمين الملفات مع مسارات مطابقة للنمط فقط. يتبعorg.apache.hadoop.fs.GlobFilterبناء الجملة . لا يغير سلوك اكتشاف القسم.
الأمثلة
> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
{1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"time":2015-08-26 00:00:00}