Funkcja from_json
Dotyczy: Databricks SQL Databricks Runtime
Zwraca wartość struktury z wartościami jsonStr
i schema
.
Składnia
from_json(jsonStr, schema [, options])
Argumenty
jsonStr
STRING
: wyrażenie określające dokument JSON.schema
STRING
: wyrażenie lub wywołanie funkcji schema_of_json.options
: opcjonalnyMAP<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ślnafalse
): wywnioskuje wszystkie wartości pierwotne jako typ ciągu.prefersDecimal
(wartość domyślnafalse
): 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ślnefalse
): ignoruje komentarz w stylu Java i C++ w rekordach JSON.allowUnquotedFieldNames
(ustawienie domyślnefalse
): zezwala na niekwestionowane nazwy pól JSON.allowSingleQuotes
(wartość domyślnatrue
): umożliwia apostrofy oprócz cudzysłowów podwójnych.allowNumericLeadingZeros
(ustawienie domyślnefalse
): zezwala na zera wiodące w liczbach (na przykład00012
).allowBackslashEscapingAnyCharacter
(wartość domyślnafalse
): umożliwia akceptowanie cudzysłów wszystkich znaków przy użyciu mechanizmu cudzysłów ukośnika odwrotnego.allowUnquotedControlChars
(ustawienie domyślnefalse
): 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ślnePERMISSIVE
): 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 przezcolumnNameOfCorruptRecord
program i ustawia źle sformułowane pola na wartość null. Aby zachować uszkodzone rekordy, można ustawić pole typu ciągu o nazwiecolumnNameOfCorruptRecord
w schemacie zdefiniowanym przez użytkownika. Jeśli schemat nie ma pola, usuwa uszkodzone rekordy podczas analizowania. Podczas wnioskowania schematu niejawnie dodajecolumnNameOfCorruptRecord
pole w schemacie wyjściowym.FAILFAST
: zgłasza wyjątek, gdy spełnia uszkodzone rekordy.
columnNameOfCorruptRecord
(wartość domyślna to wartość określona wspark.sql.columnNameOfCorruptRecord
pliku ): umożliwia zmianę nazwy nowego pola o źle sformułowanym ciągu utworzonym przezPERMISSIVE
tryb. Spowoduje to przesłonięciaspark.sql.columnNameOfCorruptRecord
.dateFormat
(wartość domyślnayyyy-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ślnayyyy-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ślnefalse
): 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 imultiLine
jest ustawione natrue
wartość , zostanie wykryte automatycznie.lineSep
(wartość domyślna obejmuje wszystkie\r
wartoś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ślnefalse
): czy ignorować kolumnę wszystkich wartości null, czy pustą tablicę/strukturę podczas wnioskowania schematu.locale
(wartość domyślna toen-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ślnetrue
): 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
iInfinity
.-INF
dla nieskończoności ujemnej), alias-Infinity
.NaN
dla innych liczb, takich jak wynik dzielenia o zero.
readerCaseSensitive
(ustawienie domyślnetrue
): określa zachowanie poufności wielkości liter porescuedDataColumn
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}