from_json fonksiyon

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş 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: Json STRING belgesi belirten ifade.
  • schema: STRING iş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ılan false): tüm ilkel değerleri dize türü olarak çıkarsar.
  • prefersDecimal (varsayılan false): 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ılan false): JSON kayıtlarındaki Java ve C++ stili açıklamayı yoksayar.
  • allowUnquotedFieldNames (varsayılan false): alıntılanmamış JSON alan adlara izin verir.
  • allowSingleQuotes (varsayılan true): çift tırnaklara ek olarak tek tırnaklara izin verir.
  • allowNumericLeadingZeros (varsayılan false): sayılarda baştaki sıfırlara izin verir (örneğin, 00012).
  • allowBackslashEscapingAnyCharacter (varsayılan false): ters eğik çizgi alıntılama mekanizmasını kullanarak tüm karakterlerden alıntı kabul edilmesini sağlar.
  • allowUnquotedControlChars (varsayılan false): 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ılan PERMISSIVE): 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ı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ı tanımlı şemada columnNameOfCorruptRecord adlı 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 bir columnNameOfCorruptRecord alanı ekler.
    • FAILFAST: bozuk kayıtlarla karşılaştığı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'yi geçersiz kılar.
  • 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.
  • multiLine (varsayılan false): 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 ve multiLinetrueolarak ayarlanırsa otomatik olarak algılanır.
  • lineSep (varsayılan olarak tüm \r, \r\n ve \n iç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ılan false): ş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-US IETF 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ılan true): 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:
    • +INF pozitif sonsuzluk için, ve +Infinity ile Infinity'nin diğer adları.
    • -INF negatif sonsuzluk için), diğer adı -Infinity.
    • NaN sıfıra bölme sonucu gibi diğer sayı olmayanlar için.
  • readerCaseSensitive (varsayılan true): Etkinleştirildiğinde rescuedDataColumn bü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