from_csv
وظيفه
ينطبق على: التحقق من 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}