Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Mengembalikan nilai struct dengan jsonStr dan schema.
Sintaks
from_json(jsonStr, schema [, options])
Argumen
-
jsonStr: EkspresiSTRINGyang menentukan dokumen json. -
schema: EkspresiSTRINGatau pemanggilanschema_of_jsonfungsi. -
options: Arahan penentuan harfiah opsionalMAP<STRING,STRING>.
jsonStr harus terbentuk dengan baik sehubungan dengan schema dan options.
schema harus didefinisikan sebagai nama kolom dan pasangan jenis data yang dipisahkan koma, mirip dengan format yang digunakan dalam CREATE TABLE. Sebelum Databricks Runtime 12.2 schema harus berupa nilai literal.
Atau, Anda dapat menggunakan from_json dengan Alur Deklaratif Lakeflow Spark untuk secara otomatis menyimpulkan dan mengembangkan skema dengan mengatur schema ke NULL dan menentukan schemaLocationKey. Misalnya, lihat Menyimpulkan dan mengembangkan skema menggunakan from_json dalam alur.
Catatan
Nama kolom dan field di schema peka huruf besar/kecil dan harus persis sama dengan nama di jsonStr.
Untuk memetakan bidang JSON yang hanya berbeda jika, Anda dapat mentransmisikan struktur yang dihasilkan ke nama bidang yang berbeda.
Lihat Contoh untuk detail selengkapnya.
options, jika tersedia, dapat berupa salah satu dari berikut ini:
-
primitivesAsString(falsedefault ): menyimpulkan semua nilai primitif sebagai jenis string. -
prefersDecimal(falsedefault ): menyimpulkan semua nilai floating-point sebagai jenis desimal. Jika nilai tidak pas dalam desimal, maka dianggap sebagai double. -
allowComments(falsedefault): mengabaikan komentar gaya Java dan C++ dalam rekaman JSON. -
allowUnquotedFieldNames(defaultfalse): memungkinkan nama bidang JSON yang tidak menggunakan tanda kutip. -
allowSingleQuotes(defaulttrue): memungkinkan tanda kutip tunggal di samping tanda kutip ganda. -
allowNumericLeadingZeros(defaultfalse): memungkinkan angka nol di depan (misalnya,00012). -
allowBackslashEscapingAnyCharacter(defaultfalse): memungkinkan pengutipan semua karakter menggunakan mekanisme pengutipan backslash. -
allowUnquotedControlChars(defaultfalse): memungkinkan String JSON berisi karakter kontrol yang tidak dikutip (karakter ASCII dengan nilai kurang dari 32, termasuk karakter umpan tab dan baris) atau tidak. -
mode(defaultPERMISSIVE): memungkinkan mode untuk menangani catatan yang rusak selama penguraian.-
PERMISSIVE: ketika menemukan catatan yang rusak, menempatkan string rusak ke dalam bidang yang dikonfigurasi olehcolumnNameOfCorruptRecord, dan menyetel bidang yang rusak ke kosong. Untuk menyimpan rekaman yang rusak, Anda dapat mengatur bidang jenis string bernamacolumnNameOfCorruptRecorddalam skema yang ditentukan pengguna. Jika skema tidak memiliki bidang, skema akan mengabaikan rekaman yang rusak selama penguraian. Saat menyimpulkan skema, secara implisit menambahkan bidangcolumnNameOfCorruptRecorddalam skema output. -
FAILFAST: melempar pengecualian saat menemukan catatan yang rusak.
-
-
columnNameOfCorruptRecord(defaultnya adalah nilai yang ditentukan dalamspark.sql.columnNameOfCorruptRecord): memungkinkan penggantian nama bidang baru yang memiliki string cacat yang dibuat oleh modePERMISSIVE. Ini menggantikanspark.sql.columnNameOfCorruptRecord. -
dateFormat(defaultyyyy-MM-dd): mengatur string yang menunjukkan format tanggal. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis tanggal. -
timestampFormat(defaultyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): menetapkan string yang menunjukkan format penanda waktu. Format tanggal kustom mengikuti format pada pola Tanggalwaktu. Ini berlaku untuk jenis stempel waktu. -
multiLine(defaultfalse): mengurai satu rekaman, yang dapat menjangkau beberapa baris, per file. -
encoding(secara default tidak diatur): memungkinkan untuk secara paksa mengatur salah satu pengodean dasar atau diperluas standar untuk file JSON. Misalnya UTF-16BE, UTF-32LE. Jika pengodean tidak ditentukan danmultiLinediatur menjaditrue, pengodean akan terdeteksi secara otomatis. -
lineSep(default mencakup semua\r,\r\n, dan\n): menentukan pemisah garis yang harus digunakan untuk penguraian. -
samplingRatio(default 1.0): menentukan sebagian kecil objek JSON input yang digunakan untuk inferensi skema. -
dropFieldIfAllNull(falsedefault ): apakah akan mengabaikan kolom semua nilai null atau array/struct kosong selama inferensi skema. -
locale(defaulten-US):setsmenentukan lokal sebagai penanda bahasa dalam format IETF BCP 47. Misalnya, ini digunakan saat mengurai tanggal dan stempel waktu. -
allowNonNumericNumbers(truedefault ): memungkinkan pengurai JSON mengenali sekumpulan token bukan angka (NaN) sebagai nilai angka mengambang legal:-
+INFuntuk tak terhingga positif, serta alias+InfinitydanInfinity. -
-INFuntuk tak terhingga negatif, alias-Infinity. -
NaNuntuk nilai bukan-bilangan lainnya, seperti hasil pembagian dengan nol.
-
-
readerCaseSensitive(defaulttrue): menentukan perilaku sensitivitas kasus saatrescuedDataColumndiaktifkan. Jika benar, selamatkan kolom data yang namanya berbeda dalam hal huruf besar/kecil dari skema; jika tidak, baca data dengan cara yang tidak peka terhadap huruf besar/kecil. Tersedia di Databricks SQL dan Databricks Runtime 13.3 LTS ke atas.
Pengembalian
Struktur dengan nama bidang dan jenis yang cocok dengan definisi skema.
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_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}
-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}
> SELECT from_json('{"datetime":"26/08/2015"}', 'datetime Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"datetime":2015-08-26 00:00:00}
-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
{"a":1, "b":0.8}
> SELECT from_json('invalid', 'a INT', map('mode', 'FAILFAST'));
Error: MALFORMED_RECORD_IN_PARSING