Udostępnij za pośrednictwem


Funkcja from_json

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Zwraca wartość struktury z wartościami jsonStr i schema.

Składnia

from_json(jsonStr, schema [, options])

Argumenty

  • jsonStrSTRING: wyrażenie określające dokument JSON.
  • schemaSTRING: wyrażenie lub wywołanie funkcji schema_of_json.
  • options: opcjonalny MAP<STRING,STRING> literał określający dyrektywy.

jsonStr powinny być dobrze sformułowane w odniesieniu do schema i options.

schema należy zdefiniować jako nazwy kolumn rozdzielanych przecinkami i pary typów danych, podobnie jak format używany w programie CREATE TABLE. Przed środowiskiem Databricks Runtime 12.2 schema musi być literałem.

Uwaga

W nazwach kolumn i pól uwzględniana schema jest wielkość liter i musi być dokładnie zgodna z nazwami jsonStr . Aby mapować pola JSON, które różnią się tylko w przypadku, można rzutować wynikowej struktury na odrębne nazwy pól. Zobacz Przykłady , aby uzyskać więcej szczegółów.

options, jeśli podano, może to być dowolny z następujących elementów:

  • primitivesAsString (wartość domyślna false): wywnioskuje wszystkie wartości pierwotne jako typ ciągu.
  • prefersDecimal (wartość domyślna false): wywnioskuje wszystkie wartości zmiennoprzecinkowe jako typ dziesiętny. Jeśli wartości nie pasują do liczby dziesiętnej, wywnioskuje je jako podwójne.
  • allowComments (ustawienie domyślne false): ignoruje komentarz w stylu Java i C++ w rekordach JSON.
  • allowUnquotedFieldNames (ustawienie domyślne false): zezwala na niekwestionowane nazwy pól JSON.
  • allowSingleQuotes (wartość domyślna true): umożliwia apostrofy oprócz cudzysłowów podwójnych.
  • allowNumericLeadingZeros (ustawienie domyślne false): zezwala na zera wiodące w liczbach (na przykład 00012).
  • allowBackslashEscapingAnyCharacter (wartość domyślna false): umożliwia akceptowanie cudzysłów wszystkich znaków przy użyciu mechanizmu cudzysłów ukośnika odwrotnego.
  • allowUnquotedControlChars (ustawienie domyślne false): umożliwia ciągom JSON zawierać niekwestionowane znaki sterujące (znaki ASCII o wartości mniejszej niż 32, w tym znaki tabulatora i wiersza) lub nie.
  • mode (ustawienie domyślne PERMISSIVE): umożliwia tryb radzenia sobie z uszkodzonymi rekordami podczas analizowania.
    • PERMISSIVE: gdy spełnia uszkodzony rekord, umieszcza źle sformułowany ciąg w polu skonfigurowanym przez columnNameOfCorruptRecordprogram i ustawia źle sformułowane pola na wartość null. Aby zachować uszkodzone rekordy, można ustawić pole typu ciągu o nazwie columnNameOfCorruptRecord w schemacie zdefiniowanym przez użytkownika. Jeśli schemat nie ma pola, usuwa uszkodzone rekordy podczas analizowania. Podczas wnioskowania schematu niejawnie dodaje columnNameOfCorruptRecord pole w schemacie wyjściowym.
    • FAILFAST: zgłasza wyjątek, gdy spełnia uszkodzone rekordy.
  • columnNameOfCorruptRecord (wartość domyślna to wartość określona w spark.sql.columnNameOfCorruptRecordpliku ): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przez PERMISSIVE tryb. Spowoduje to przesłonięcia spark.sql.columnNameOfCorruptRecord.
  • dateFormat (wartość domyślna yyyy-MM-dd): ustawia ciąg, który wskazuje format daty. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu daty.
  • timestampFormat (wartość domyślna yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]): ustawia ciąg, który wskazuje format znacznika czasu. Niestandardowe formaty dat są zgodne z formatami we wzorcach daty/godziny. Dotyczy to typu znacznika czasu.
  • multiLine (ustawienie domyślne false): analizuje jeden rekord, który może obejmować wiele wierszy na plik.
  • encoding (domyślnie nie jest ustawiona): umożliwia wymuszone ustawienie jednego ze standardowych podstawowych lub rozszerzonych kodowań dla plików JSON. Na przykład UTF-16BE, UTF-32LE. Jeśli kodowanie nie jest określone i multiLine jest ustawione na truewartość , zostanie wykryte automatycznie.
  • lineSep (wartość domyślna obejmuje wszystkie \rwartości , \r\n i \n): definiuje separator linii, który ma być używany do analizowania.
  • samplingRatio (wartość domyślna 1.0): definiuje ułamek wejściowych obiektów JSON używanych do wnioskowania schematu.
  • dropFieldIfAllNull (ustawienie domyślne false): czy ignorować kolumnę wszystkich wartości null, czy pustą tablicę/strukturę podczas wnioskowania schematu.
  • locale (wartość domyślna to en-US): sets ustawienia regionalne jako tag języka w formacie IETF BCP 47. Na przykład jest to używane podczas analizowania dat i sygnatur czasowych.
  • allowNonNumericNumbers (ustawienie domyślne true): umożliwia analizatorowi JSON rozpoznawanie zestawu tokenów not-a-number (NaN) jako wartości liczb zmiennoprzecinkowych ze względów prawnych:
    • +INF dla nieskończoności dodatniej, a także aliasów +Infinity i Infinity.
    • -INF dla nieskończoności ujemnej), alias -Infinity.
    • NaN dla innych liczb, takich jak wynik dzielenia o zero.
  • readerCaseSensitive (ustawienie domyślne true): określa zachowanie poufności wielkości liter po rescuedDataColumn włączeniu. Jeśli to prawda, należy uratować kolumny danych, których nazwy różnią się wielkością liter od schematu; w przeciwnym razie odczytaj dane w sposób niewrażliwy na wielkość liter. Dostępne w usługach Databricks SQL i Databricks Runtime 13.3 LTS i nowszych.

Zwraca

Struktura z nazwami pól i typami pasującymi do definicji schematu.

Przykłady

> 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}