from_csv işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Yapı değeri csvStr ve schema ile döndürür.

Söz dizimi

from_csv(csvStr, schema [, options])

Argümanlar

  • csvStr: CSV veri satırını belirten STRING ifadesi.
  • schema: Dize sabiti veya schema_of_csv işlev çağrısı.
  • options: İsteğe bağlı MAP<STRING,STRING> değişmez değer belirtme yönergeleri.

İadeler

Şema tanımıyla eşleşen alan adları ve türleri içeren bir STRUCT.

csvStr, schema ve options bağlamında iyi biçimlendirilmelidir. schema içinde kullanıldığı gibi virgülle ayrılmış sütun adı ve veri türü çiftleri olarak tanımlanmalıdır, örneğin CREATE TABLE.

optionssağlanmışsa aşağıdakilerden biri olabilir:

  • sep (varsayılan ,): her alan ve değer için bir ayırıcı ayarlar. Ayırıcı, bir veya daha fazla karakter olabilir.
  • encoding (varsayılan UTF-8): BELIRTILEN kodlama türüne göre CSV dosyalarının kodunu çözer.
  • quote (varsayılan "): Ayırıcının değerin parçası olabileceği durumlarda, tırnak içindeki değerleri kaçmak için kullanılan tek bir karakteri ayarlar. Alıntıları devre dışı bırakmak isterseniz, null değil, boş bir dize ayarlamanız gerekir. Bu davranış ile com.databricks.spark.csvfarklıdır.
  • escape (varsayılan \): Zaten tırnak içinde tırnak işaretinden kaçış için kullanılan tek bir karakter ayarlar.
  • charToEscapeQuoteEscaping (varsayılan escape veya \0): tırnak karakteri için kaçış karakterinden kaçış sağlayan tek bir karakter ayarlar. Varsayılan değer, escape ve quote karakterleri farklı olduğunda kaçış karakteri, aksi takdirde \0'dir.
  • comment (varsayılan boş dize): Bu karakterden başlayarak satırları atlamak için kullanılan tek bir karakter ayarlar. Varsayılan olarak devre dışıdır.
  • header (varsayılan false): Okuma için ilk satırı sütunların adı olarak kullanır. Yazmak için, sütunların adlarını ilk satır olarak yazar. CSV yerleşik işlevleri bu seçeneği yoksayar.
  • enforceSchema (varsayılan true): True olarak ayarlanırsa, belirtilen veya çıkarılmış şema zorla veri kaynağı dosyalarına uygulanır ve CSV dosyalarındaki üst bilgiler göz ardı edilir. Seçenek false olarak ayarlanırsa, üst bilgi seçeneğinin true olarak ayarlanması durumunda csv dosyalarındaki tüm üst bilgiler için şema doğrulanır. Şemadaki alan adları ve CSV üst bilgilerindeki sütun adları, konumlarına göre spark.sql.caseSensitivedikkate alınarak kontrol edilmektedir. Varsayılan değer true olsa da, yanlış sonuçlardan kaçınmak için enforceSchema seçeneğini devre dışı bırakması önerilir.
  • inferSchema (varsayılan false): verilerden giriş şemasını otomatik olarak çıkartır. Veriler üzerinde fazladan bir geçiş yapılması gerekir.
  • samplingRatio (varsayılan 1.0): şema çıkarsama için kullanılan satırların kesirini tanımlar.
  • ignoreLeadingWhiteSpace (varsayılan false): Okunan değerlerden baştaki boşlukların atlanıp atlanmayacağını gösteren bir bayrak.
  • ignoreTrailingWhiteSpace (varsayılan false): Okunan değerlerden gelen son boşlukların atlanıp atlanmayacağını belirten bir bayrak.
  • nullValue (varsayılan boş dize): null değerin dize gösterimini ayarlar.
  • emptyValue (varsayılan boş dize): Boş bir değerin dize gösterimini ayarlar.
  • nanValue (varsayılan NaN): Sayı olmayan bir değerin dize gösterimini ayarlar.
  • positiveInf (varsayılan Inf): pozitif sonsuzluk değerinin dize gösterimini ayarlar.
  • negativeInf (varsayılan -Inf): negatif sonsuzluk değerinin dize gösterimini ayarlar.
  • dateFormat (varsayılan yyyy-MM-dd): tarih biçimini gösteren dizeyi ayarlar. Özel tarih biçimleri Tarih saat desenleri'ndeki biçimleri izler. Bu, tarih türü için geçerlidir.
  • timestampFormat (varsayılan yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): zaman damgası biçimini gösteren dizeyi ayarlar. Özel tarih biçimleri Tarih saat desenleri'ndeki biçimleri izler. Bu, zaman damgası türü için geçerlidir.
  • maxColumns (varsayılan 20480): Bir kaydın kaç sütuna sahip olabileceğinin sabit bir sınırını tanımlar.
  • maxCharsPerColumn (varsayılan -1): okunan belirli bir değer için izin verilen en fazla karakter sayısını tanımlar. Varsayılan olarak, sınırsız uzunluk anlamına gelen -1'dir
  • unescapedQuoteHandling (varsayılan STOP_AT_DELIMITER): CSV ayrıştırıcısının, kaçış karakteri kullanılmamış tırnak işaretleriyle olan değerleri nasıl işlediğini tanımlar.
    • STOP_AT_CLOSING_QUOTE: Girişte serbest tırnaklar bulunursa, tırnak karakterini biriktirin ve kapanış teklifi bulunana kadar değeri tırnak içinde bir değer olarak ayrıştırmaya devam edin.
    • BACK_TO_DELIMITER: Girişte sıralanmamış tırnak işaretleri bulunursa, değeri tırnak içine alınmamış bir değer olarak düşünün. Bu, sınırlayıcı bulunana kadar ayrıştırıcının geçerli ayrıştırılan değerin tüm karakterlerini toplamasını sağlar. Değerde sınırlayıcı bulunmazsa, ayrıştırıcı bir sınırlayıcı veya satır sonu bulunana kadar girişteki karakterleri biriktirmeye devam eder.
    • STOP_AT_DELIMITER: Girişte sıralanmamış tırnak işaretleri bulunursa, değeri tırnak içine alınmamış bir değer olarak düşünün. Bu, ayrıştırıcının, girişte bir sınırlayıcıya veya satır sonuna ulaşılana kadar tüm karakterleri biriktirmesini sağlar.
    • STOP_AT_DELIMITER: Girişte sıralanmamış tırnak işaretleri bulunursa, belirtilen değer için ayrıştırılan içerik atlanır ve bunun yerine nullValue'de ayarlanan değer oluşturulur.
    • RAISE_ERROR: Girişte ayarlanmamış tırnak işaretleri bulunursa, bir TextParsingException oluşturulur.
  • mode (varsayılan PERMISSIVE): ayrıştırma sırasında bozuk kayıtlarla ilgilenmek için bir moda izin verir. Büyük/küçük harfe duyarsız olan aşağıdaki modları destekler. Spark, CSV'de sütun ayıklama altında yalnızca gerekli sütunları ayrıştırmaya çalışır. Bu nedenle, bozuk kayıtlar gerekli alan kümesine göre farklı olabilir. Bu davranış tarafından spark.sql.csv.parser.columnPruning.enabled denetlenebilir (varsayılan olarak etkindir).
    • PERMISSIVE: bozuk bir kaydı karşıladığında, hatalı biçimlendirilmiş dizeyi tarafından columnNameOfCorruptRecordyapılandırılan bir alana yerleştirir ve hatalı biçimlendirilmiş alanları null olarak ayarlar. Bozuk kayıtları tutmak için kullanıcı, kullanıcı tanımlı bir şemada columnNameOfCorruptRecord adlı bir dize türü alanı ayarlayabilir. Bir şemanın alanı yoksa, ayrıştırma sırasında bozuk kayıtları bırakır. Şemadan daha az veya daha fazla belirteci olan bir kayıt CSV'ye bozuk bir kayıt değildir. Şemanın uzunluğundan daha az belirteç içeren bir kaydı karşıladığında null değerini ek alanlara ayarlar. Şema uzunluğundan daha fazla belirteci olduğunda, kayıttaki fazladan belirteçler atılır.
    • FAILFAST: bozuk kayıtları karşıladığında bir istisna fırlatır.
  • columnNameOfCorruptRecord (varsayılan değer spark.sql.columnNameOfCorruptRecord' de belirtilen değerdir): PERMISSIVE modu tarafından oluşturulan hatalı biçimlendirilmiş dizeye sahip yeni alanın yeniden adlandırılmasına izin verir. Bu, spark.sql.columnNameOfCorruptRecord öğeyi geçersiz kılar.
  • multiLine (varsayılan false): Birden çok satıra yayılabilen bir kaydı ayrıştırma.
  • locale (varsayılan en-US): IETF BCP 47 biçiminde bir yerel ayarı dil etiketi olarak ayarlar. Örneğin, tarihler ve zaman damgaları ayrıştırılırken bu kullanılır.
  • lineSep (varsayılan, tüm \r, \r\nve \n): ayrıştırma için kullanılması gereken çizgi ayırıcısını tanımlar. Uzunluk üst sınırı 1 karakterdir.
  • pathGlobFilter: yalnızca desenle eşleşen yollara sahip dosyaları dahil etmek için isteğe bağlı bir glob deseni. Söz dizimi aşağıdaki gibidir org.apache.hadoop.fs.GlobFilter. Bölüm bulma davranışını değiştirmez.

mode seçeneği FAILFAST olarak ayarlandığında, giriş şemaya uymuyorsa Azure Databricks MALFORMED_RECORD_IN_PARSING oluşturur.

Yaygın hata koşulları

Örnekler

> 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}

> SELECT from_csv('abc', 'a INT', map('mode', 'FAILFAST'));
  Error: MALFORMED_RECORD_IN_PARSING