from_csv fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Menghasilkan nilai struktur dengan csvStr dan schema.

Sintaks

from_csv(csvStr, schema [, options])

Argumen

  • csvStr: Ekspresi STRING yang menentukan baris data CSV.
  • schema: String literal atau pemanggilan schema_of_csv fungsi.
  • options: MAP opsional<STRING,STRING> literal yang menentukan direktif.

Pengembalian

STRUCT dengan nama bidang dan jenis yang cocok dengan definisi skema.

csvStr harus dibentuk dengan baik sehubungan dengan schema dan options. schema harus didefinisikan sebagai nama kolom yang dipisahkan koma dan pasangan tipe data seperti yang digunakan dalam contoh CREATE TABLE.

options, jika tersedia, dapat berupa salah satu dari berikut ini:

  • sep (default ,): mengatur pemisah untuk setiap bidang dan nilai. Pemisah ini dapat berupa satu atau lebih karakter.
  • encoding (UTF-8 default): mendekode file CSV menurut jenis penyandian yang ditentukan.
  • quote ("default ): mengatur satu karakter yang digunakan untuk melarikan diri dari nilai yang dikutip di mana pemisah dapat menjadi bagian dari nilai. Jika Anda ingin menonaktifkan kutipan, Anda perlu mengatur bukan null tetapi string kosong. Perilaku ini berbeda dari com.databricks.spark.csv.
  • escape (default \): mengatur satu karakter yang digunakan untuk keluar dari tanda kutip di dalam nilai yang sudah dikutip.
  • charToEscapeQuoteEscaping (default escape atau \0): mengatur satu karakter yang digunakan untuk meloloskan diri dari karakter kutipan. Nilai default adalah karakter escape jika karakter escape dan quote berbeda, \0 sebaliknya.
  • comment (string kosong default): mengatur satu karakter yang digunakan untuk melewatkan baris yang dimulai dengan karakter ini. Secara default, akan dinonaktifkan.
  • header (default false): Untuk membaca, menggunakan baris pertama sebagai nama kolom. Untuk menulis, menulis nama kolom sebagai baris pertama. Fungsi bawaan CSV mengabaikan opsi ini.
  • enforceSchema (truedefault ): Jika diatur ke true, skema yang ditentukan atau disimpulkan diterapkan secara paksa ke file sumber data, dan header dalam file CSV diabaikan. Jika opsi diatur ke false, skema divalidasi terhadap semua header dalam file CSV dalam kasus ketika opsi header diatur ke true. Nama bidang dalam skema dan nama kolom di header CSV diperiksa berdasarkan posisinya dengan mempertimbangkan spark.sql.caseSensitive. Meskipun nilai defaultnya adalah true, disarankan untuk menonaktifkan opsi enforceSchema guna menghindari hasil yang tidak benar.
  • inferSchema (falsedefault ): menyimpulkan skema input secara otomatis dari data. Ini memerlukan satu kali lintasan tambahan pada data.
  • samplingRatio (default 1.0): menentukan sebagian kecil baris yang digunakan untuk inferensi skema.
  • ignoreLeadingWhiteSpace (default false): penanda yang menunjukkan apakah spasi kosong di depan dari nilai yang dibaca harus dilewati.
  • ignoreTrailingWhiteSpace (falsedefault ): bendera yang menunjukkan apakah spasi kosong berikutnya dari nilai yang dibaca harus dilewati.
  • nullValue (string kosong default): mengatur representasi string dari nilai nol.
  • emptyValue (string kosong default): mengatur representasi string dari nilai kosong.
  • nanValue (default NaN): mengatur representasi string dari nilai bukan angka.
  • positiveInf (default Inf): mengatur representasi string dari nilai tak terhingga positif.
  • negativeInf (default -Inf): mengatur representasi string dari nilai tak terhingga negatif.
  • dateFormat (default yyyy-MM-dd): mengatur string yang menunjukkan format tanggal. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis tanggal.
  • timestampFormat (default yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): mengatur teks yang menunjukkan format stempel waktu. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis stempel waktu.
  • maxColumns (default 20480): menetapkan batas maksimal berapa banyak kolom yang dapat dimiliki sebuah record.
  • maxCharsPerColumn (default -1): mendefinisikan jumlah karakter maksimum yang diizinkan untuk nilai tertentu yang sedang dibaca. Secara default, ini adalah -1 yang berarti panjang tidak terbatas
  • unescapedQuoteHandling (STOP_AT_DELIMITERdefault ): menentukan bagaimana pengurai CSV menangani nilai dengan tanda kutip yang tidak dilewati.
    • STOP_AT_CLOSING_QUOTE: Jika tanda kutip yang belum lolos ditemukan dalam input, kumpulkan karakter tanda kutip dan lanjutkan memproses nilai sebagai nilai dalam tanda kutip, hingga tanda kutip penutup ditemukan.
    • BACK_TO_DELIMITER: Jika tanda kutip yang tidak ter-escape ditemukan dalam input, nilainya dianggap tidak dikutip. Ini akan membuat parser mengumpulkan semua karakter dari nilai parsing saat ini hingga pembatas ditemukan. Jika tidak ada pemisah yang ditemukan dalam nilai, pengurai akan terus mengumpulkan karakter dari input sampai pemisah atau akhir garis ditemukan.
    • STOP_AT_DELIMITER: Jika tanda kutip yang tidak ter-escape ditemukan dalam input, nilainya dianggap tidak dikutip. Ini akan membuat parser mengumpulkan semua karakter hingga pembatas atau akhir baris ditemukan di input.
    • STOP_AT_DELIMITER: Jika tanda kutip yang tidak ter-escape ditemukan dalam input, konten diparsing untuk nilai yang ditentukan dilewati dan nilai yang ditetapkan dalam nullValue akan diproduksi sebagai gantinya.
    • RAISE_ERROR: Jika tanda kutip yang tidak lolos ditemukan di input, TextParsingException akan ditampilkan.
  • mode (default PERMISSIVE): memungkinkan mode untuk menangani catatan yang rusak selama penguraian. Ini mendukung mode tidak peka huruf besar/kecil berikut. Spark mencoba mengurai hanya kolom yang diperlukan di CSV dalam optimalisasi kolom. Oleh karena itu, catatan yang rusak bisa berbeda berdasarkan kumpulan bidang yang diperlukan. Perilaku ini dapat dikontrol oleh spark.sql.csv.parser.columnPruning.enabled (diaktifkan secara bawaan).
    • PERMISSIVE: ketika menemui catatan yang rusak, menempatkan string yang rusak ke dalam bidang yang dikonfigurasi oleh columnNameOfCorruptRecord, dan menyetel bidang yang salah menjadi null. Untuk menyimpan rekaman yang rusak, pengguna dapat mengatur bidang jenis string bernama columnNameOfCorruptRecord dalam skema yang ditentukan pengguna. Jika skema tidak memiliki bidang, skema akan mengabaikan rekaman yang rusak selama penguraian. Rekaman dengan lebih sedikit atau lebih banyak token daripada skema bukanlah rekaman yang rusak ke CSV. Saat menemukan rekaman yang memiliki lebih sedikit token daripada jumlah elemen dalam skema, mengatur nilai null pada bidang tambahan. Ketika rekaman memiliki lebih banyak token daripada panjang skema itu, rekaman tersebut menghapus token tambahan.
    • FAILFAST: melempar pengecualian saat menemukan catatan yang rusak.
  • columnNameOfCorruptRecord (defaultnya adalah nilai yang ditentukan dalam spark.sql.columnNameOfCorruptRecord): memungkinkan penggantian nama bidang baru yang memiliki string cacat yang dibuat oleh mode PERMISSIVE. Ini menggantikan spark.sql.columnNameOfCorruptRecord.
  • multiLine (default false): mengurai satu catatan, yang mungkin mencakup beberapa baris.
  • locale (default en-US): menetapkan lokal sebagai tag bahasa dalam format IETF BCP 47. Misalnya, ini digunakan saat mengurai tanggal dan stempel waktu.
  • lineSep (default mencakup semua \r, \r\n, dan \n): mendefinisikan pemisah baris yang harus digunakan untuk penguraian. Panjang maksimal 1 karakter.
  • pathGlobFilter: pola glob opsional untuk hanya menyertakan file dengan jalur yang cocok dengan pola tersebut. Sintaksisnya mengikuti org.apache.hadoop.fs.GlobFilter. Ini tidak mengubah perilaku penemuan partisi.

Saat opsi mode diatur ke FAILFAST, Azure Databricks menaikkan MALFORMED_RECORD_IN_PARSING jika input tidak sesuai dengan skema.

Kondisi kesalahan umum

Contoh

> 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