from_csv
Fungsi
Berlaku untuk: pemeriksaan Databricks SQL
Databricks Runtime
Mengembalikan nilai struct dengan csvStr
dan schema
.
Sintaks
from_csv(csvStr, schema [, options])
Argumen
csvStr
: Ekspresi STRING yang menentukan baris data CSV.schema
: String literal atau pemanggilan fungsi schema_of_csv.options
: STRING MAP<opsional, STRING> literal yang menentukan direktif.
Kembali
STRUCT dengan nama bidang dan jenis yang cocok dengan definisi skema.
csvStr
harus terbentuk dengan baik sehubungan schema
dengan dan options
.
schema
harus didefinisikan sebagai nama kolom dan pasangan jenis data yang dipisahkan koma seperti yang digunakan dalam misalnya CREATE TABLE
.
options
, jika disediakan, dapat berupa salah satu hal berikut:
sep
(default,
): mengatur pemisah untuk setiap bidang dan nilai. Pemisah ini bisa berupa satu atau beberapa karakter.encoding
(UTF-8 default): mendekode file CSV dengan jenis pengodean 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 daricom.databricks.spark.csv
.escape
(default\
): menetapkan satu karakter yang digunakan untuk melarikan diri dari tanda kutip di dalam nilai yang sudah dikutip.charToEscapeQuoteEscaping
(defaultescape
atau\0
): mengatur satu karakter yang digunakan untuk melarikan diri untuk karakter kutipan. Nilai defaultnya adalah karakter escape ketikaescape
karakter danquote
berbeda,\0
jika tidak.comment
(string kosong default): mengatur satu karakter yang digunakan untuk melompati baris yang dimulai dengan karakter ini. Secara default, ini dinonaktifkan.- header (default
false
): menggunakan baris pertama sebagai nama kolom. enforceSchema
(defaulttrue
): 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 nama skema dan kolom di header CSV diperiksa oleh posisinya dengan mempertimbangkanspark.sql.caseSensitive
. Meskipun nilai defaultnya benar, disarankan untuk menonaktifkan opsi enforceSchema untuk menghindari hasil yang salah.inferSchema
(defaultfalse
): menyimpulkan skema input secara otomatis dari data. Ini membutuhkan satu pass tambahan atas data.samplingRatio
(default 1.0): mendefinisikan sebagian kecil baris yang digunakan untuk inferensi skema.ignoreLeadingWhiteSpace
(defaultfalse
): bendera yang menunjukkan apakah spasi kosong di depan atau tidak dari nilai yang dibaca harus dilewati.ignoreTrailingWhiteSpace
(defaultfalse
): bendera yang menunjukkan apakah spasi kosong di belakang atau tidak dari nilai yang dibaca harus dilewati.nullValue
(string kosong default): mengatur representasi string dari nilai null.emptyValue
(string kosong default): mengatur representasi string dari nilai kosong.nanValue
(defaultNaN
): mengatur representasi string dari nilai bukan angka.positiveInf
(defaultInf
): menetapkan representasi string dari nilai tak terbatas positif.negativeInf
(default-Inf)
: mengatur representasi string dari nilai tak terbatas negatif.dateFormat
(defaultyyyy-MM-dd
): mengatur string yang menunjukkan format tanggal. Format tanggal kustom mengikuti format pada pola Datetime. Ini berlaku untuk jenis tanggal.timestampFormat
(defaultyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): mengatur string yang menunjukkan format tanda waktu. Format tanggal kustom mengikuti format pada pola Datetime. Ini berlaku untuk jenis tanda waktu.maxColumns
(default20480
): menentukan batas keras berapa banyak kolom yang dapat dimiliki rekaman.maxCharsPerColumn
(default -1): menentukan jumlah maksimum karakter yang diizinkan untuk nilai tertentu yang dibaca. Secara default, ini adalah -1 yang berarti panjang tidak terbatasunescapedQuoteHandling
(defaultSTOP_AT_DELIMITER
): menentukan bagaimana pengurai CSV menangani nilai dengan tanda kutip yang tidak dilepas.STOP_AT_CLOSING_QUOTE
: Jika tanda kutip yang tidak dilepas ditemukan dalam input, akumulasi karakter kutipan dan lanjutkan mengurai nilai sebagai nilai yang dikutip, hingga kutipan penutup ditemukan.BACK_TO_DELIMITER
: Jika tanda kutip yang tidak dilewati ditemukan dalam input, pertimbangkan nilai sebagai nilai yang tidak dikutip. Ini akan membuat pengurai mengakumulasi semua karakter dari nilai yang diurai saat ini hingga pemisah ditemukan. Jika tidak ada pemisah yang ditemukan dalam nilai, pengurai akan terus mengakumulasi karakter dari input hingga pemisah atau akhir baris ditemukan.STOP_AT_DELIMITER
: Jika tanda kutip yang tidak dilewati ditemukan dalam input, pertimbangkan nilai sebagai nilai yang tidak dikutip. Ini akan membuat pengurai mengumpulkan semua karakter sampai pemisah atau akhir baris ditemukan dalam input.STOP_AT_DELIMITER
: Jika tanda kutip yang tidak dilewati ditemukan dalam input, konten yang diurai untuk nilai yang ditentukan dilewati dan nilai yang ditetapkan dinullValue
diproduksi sebagai gantinya.RAISE_ERROR
: Jika tanda kutip yang tidak dilewati ditemukan dalam input, akanTextParsingException
dilemparkan.
mode
(defaultPERMISSIVE
): memungkinkan mode untuk menangani rekaman yang rusak selama penguraian. Ini mendukung mode tidak peka huruf besar/kecil berikut. Spark mencoba mengurai hanya kolom yang diperlukan di CSV di bawah pemangkasan kolom. Oleh karena itu, rekaman yang rusak bisa berbeda berdasarkan kumpulan bidang yang diperlukan. Perilaku ini dapat dikontrol olehspark.sql.csv.parser.columnPruning.enabled
(diaktifkan secara default).PERMISSIVE
: ketika memenuhi rekaman yang rusak, menempatkan string cacat ke dalam bidang yang dikonfigurasi olehcolumnNameOfCorruptRecord
, dan mengatur bidang cacat ke 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 menghilangkan rekaman yang rusak selama penguraian. Rekaman dengan lebih sedikit atau lebih banyak token daripada skema bukanlah rekaman yang rusak ke CSV. Ketika memenuhi rekaman yang memiliki token lebih sedikit daripada panjang skema, mengatur null ke bidang tambahan. Ketika catatan memiliki lebih banyak token daripada panjang skema, catatan tersebut menghilangkan token tambahan.FAILFAST
: melempar pengecualian ketika memenuhi rekaman yang rusak.
columnNameOfCorruptRecord
(defaultnya adalah nilai yang ditentukan dalamspark.sql.columnNameOfCorruptRecord
): memungkinkan penggantian nama bidang baru yang memiliki string cacat yang dibuat olehPERMISSIVE
mode. Ini mengambilspark.sql.columnNameOfCorruptRecord
alih .multiLine
(defaultfalse
): uraikan satu rekaman, yang dapat mencakup beberapa baris.locale
(defaulten-US
): mengatur lokal sebagai tag bahasa dalam format IETF BCP 47. Misalnya, ini digunakan saat mengurai tanggal dan tanda waktu.lineSep
(default mencakup semua\r
,\r\n
, dan\n
): mendefinisikan pemisah baris yang harus digunakan untuk penguraian. Panjang maksimum adalah 1 karakter.pathGlobFilter
: pola glob opsional untuk hanya menyertakan file dengan jalur yang cocok dengan pola. Sintaksnya mengikutiorg.apache.hadoop.fs.GlobFilter
. Ini tidak mengubah perilaku penemuan partisi.
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}