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}