Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime
Bir yapı değeri "jsonStr" ve "schema" ile döndürülür.
Söz dizimi
from_json(jsonStr, schema [, options])
Tartışmalar
-
jsonStr: JsonSTRINGbelgesi belirten ifade. -
schema:STRINGişlev çağrısı veya ifadesischema_of_json. -
options: İsteğe bağlıMAP<STRING,STRING>yönergeleri belirten bir literal.
jsonStr'nin schema ve options ile ilgili olarak düzgün biçimlendirilmiş olması gerekir.
, schema içinde CREATE TABLEkullanılan biçime benzer şekilde virgülle ayrılmış sütun adları ve veri türü çiftleri olarak tanımlanmalıdır. Databricks Runtime 12.2'nin schema öncesinde literal olmalıdır.
Alternatif olarak, from_json Lakeflow Spark Deklaratif İşlem Hatları ile kullanarak, schema NULL olarak ayarlayıp bir schemaLocationKey belirterek şemayı otomatik olarak çıkarıp geliştirebilirsiniz. Örnekler için bkz. İşlem hatlarında kullanarak from_json şemayı çıkarsama ve geliştirme.
Uyarı
schema içindeki sütun ve alan adları büyük/küçük harfe duyarlıdır ve jsonStr'deki adlarla tam olarak eşleşmelidir.
Yalnızca büyük/küçük harfe göre farklılık gösteren JSON alanlarını eşlemek için, sonuçta elde edilen yapıyı farklı alan adlarına dönüştürebilirsiniz.
Diğer ayrıntılar için bkz . Örnekler .
optionssağlanmışsa aşağıdakilerden biri olabilir:
-
primitivesAsString(varsayılanfalse): tüm ilkel değerleri dize türü olarak çıkarsar. -
prefersDecimal(varsayılanfalse): tüm kayan nokta değerlerini ondalık tür olarak çıkarsar. Değerler ondalık değere sığmıyorsa, değerleri çift olarak varsayar. -
allowComments(varsayılanfalse): JSON kayıtlarındaki Java ve C++ stili açıklamayı yoksayar. -
allowUnquotedFieldNames(varsayılanfalse): alıntılanmamış JSON alan adlara izin verir. -
allowSingleQuotes(varsayılantrue): çift tırnaklara ek olarak tek tırnaklara izin verir. -
allowNumericLeadingZeros(varsayılanfalse): sayılarda baştaki sıfırlara izin verir (örneğin,00012). -
allowBackslashEscapingAnyCharacter(varsayılanfalse): ters eğik çizgi alıntılama mekanizmasını kullanarak tüm karakterlerden alıntı kabul edilmesini sağlar. -
allowUnquotedControlChars(varsayılanfalse): JSON Dizelerinin tırnak içine alınmamış denetim karakterleri (sekme ve satır besleme karakterleri dahil olmak üzere 32'den küçük ASCII karakterleri) içermesine izin verip vermeyeceğini belirler. -
mode(varsayılanPERMISSIVE): ayrıştırma sırasında bozuk kayıtlarla ilgilenmek için bir moda izin verir.-
PERMISSIVE: bozuk bir kaydı karşıladığında, hatalı biçimlendirilmiş dizeyi tarafındancolumnNameOfCorruptRecordyapılandırılan bir alana yerleştirir ve hatalı biçimlendirilmiş alanları null olarak ayarlar. Bozuk kayıtları tutmak için, kullanıcı tanımlı şemadacolumnNameOfCorruptRecordadlı bir dize türü alanı ayarlayabilirsiniz. Bir şemanın alanı yoksa, ayrıştırma sırasında bozuk kayıtları bırakır. Bir şema çıkarıldığında, bir çıktı şemasına örtük olarak bircolumnNameOfCorruptRecordalanı ekler. -
FAILFAST: bozuk kayıtlarla karşılaştığında bir istisna fırlatır.
-
-
columnNameOfCorruptRecord(varsayılan değerspark.sql.columnNameOfCorruptRecord' de belirtilen değerdir):PERMISSIVEmodu tarafından oluşturulan hatalı biçimlendirilmiş dizeye sahip yeni alanın yeniden adlandırılmasına izin verir. Bu,spark.sql.columnNameOfCorruptRecord'yi geçersiz kılar. -
dateFormat(varsayılanyyyy-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ılanyyyy-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. -
multiLine(varsayılanfalse): Bir dosya başına, birden fazla satıra yayılabilen tek bir kaydı ayrıştırır. -
encoding(varsayılan olarak ayarlanmaz): JSON dosyaları için standart temel veya genişletilmiş kodlamalardan birini zorla ayarlamaya olanak tanır. Örneğin UTF-16BE, UTF-32LE. Kodlama belirtilmezse vemultiLinetrueolarak ayarlanırsa otomatik olarak algılanır. -
lineSep(varsayılan olarak tüm\r,\r\nve\niçin): ayrıştırma için kullanılması gereken çizgi ayırıcısını tanımlar. -
samplingRatio(varsayılan 1.0): şema çıkarım için kullanılan giriş JSON nesnelerinin kesirini tanımlar. -
dropFieldIfAllNull(varsayılanfalse): şema çıkarımı sırasında tüm null değerler içeren veya boş dizi/yapı sütununun yoksayılması gerekip gerekmediği. -
locale(varsayılan değer):en-USIETF BCP 47 biçiminde dil etiketi olarak bir yerel ayardırsets. Örneğin, tarihler ve zaman damgaları ayrıştırılırken bu kullanılır. -
allowNonNumericNumbers(varsayılantrue): JSON ayrıştırıcısının sayı olmayan (NaN) belirteç kümesini yasal kayan sayı değerleri olarak tanımasına olanak tanır:-
+INFpozitif sonsuzluk için, ve+InfinityileInfinity'nin diğer adları. -
-INFnegatif sonsuzluk için), diğer adı-Infinity. -
NaNsıfıra bölme sonucu gibi diğer sayı olmayanlar için.
-
-
readerCaseSensitive(varsayılantrue): EtkinleştirildiğinderescuedDataColumnbüyük/küçük harf duyarlılığı davranışını belirtir. Doğruysa, adları şemadan büyük/küçük harfe göre farklılık gösteren veri sütunlarını kurtarın; aksi takdirde, verileri büyük/küçük harfe duyarlı olmayan bir şekilde okuyun. Databricks SQL ve Databricks Runtime 13.3 LTS ve üzerinde kullanılabilir.
İadeler
Şema tanımıyla eşleşen alan adlarını ve türlerini içeren bir yapı.
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_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