from_json
関数
適用対象: Databricks SQL Databricks Runtime
jsonStr
と schema
を含む構造体の値を返します。
構文
from_json(jsonStr, schema [, options])
引数
jsonStr
: json ドキュメントを指定するSTRING
式。schema
: schema_of_json関数のSTRING
式または呼び出し。options
: ディレクティブを指定する省略可能なMAP<STRING,STRING>
リテラル。
jsonStr
は、schema
および options
に関して適切な形式である必要があります。
schema
は、 CREATE TABLE
で使用される形式と同様に、コンマ区切りの列名とデータ型のペアとして定義する必要があります。
Databricks Runtime 12.2 より前では、schema
はリテラルである必要があります。
Note
schema
の列名とフィールド名は大文字と小文字が区別され、jsonStr
の名前と正確に一致する必要があります。
大文字と小文字のみが異なる JSON フィールドをマップするには、結果の構造体を個別のフィールド名にキャストできます。
詳細については、 Examples を参照してください。
options
は、指定する場合は、次のいずれかを指定できます。
primitivesAsString
(既定値はfalse
): すべてのプリミティブ値を文字列型として推論します。prefersDecimal
(既定値はfalse
): すべての浮動小数点値を 10 進型として推論します。 値が 10 進に合わない場合は、倍精度浮動小数点として推論します。allowComments
(既定値はfalse
): JSON レコード内の Java および C++ スタイルのコメントを無視します。allowUnquotedFieldNames
(既定値はfalse
): 引用符で囲まれていない JSON フィールド名を許可します。allowSingleQuotes
(既定値はtrue
): 二重引用符に加えて単一引用符も許可します。allowNumericLeadingZeros
(既定値はfalse
): 数字の先頭にゼロを指定できます (例:00012
)。allowBackslashEscapingAnyCharacter
(既定値はfalse
): 円記号の引用メカニズムを使用して、すべての文字の引用を受け入れることができます。allowUnquotedControlChars
(既定値はfalse
): JSON 文字列に、引用符で囲まれていない制御文字 (タブや改行文字を含む、32 未満の値の ASCII 文字) を含めることを許可します。mode
(既定値はPERMISSIVE
): 解析中に破損したレコードを処理するモードを許可します。PERMISSIVE
: 破損したレコードに合致する場合は、columnNameOfCorruptRecord
によって構成されたフィールドに形式に誤りがある文字列を格納し、形式に誤りがあるフィールドを null 値に設定します。 破損したレコードを保持するには、ユーザー定義スキーマでcolumnNameOfCorruptRecord
という名前の文字列型フィールドを設定できます。 スキーマにフィールドがない場合、破損したレコードが解析中に削除されます。 スキーマを推論すると、出力スキーマにcolumnNameOfCorruptRecord
フィールドが暗黙的に追加されます。FAILFAST
: 破損したレコードに合致する場合に、例外をスローします。
columnNameOfCorruptRecord
(既定値はspark.sql.columnNameOfCorruptRecord
で指定された値):PERMISSIVE
モードによって作成された、形式に誤りがある文字列を含む新しいフィールドの名前を変更できます。 これはspark.sql.columnNameOfCorruptRecord
をオーバーライドします。dateFormat
(既定値はyyyy-MM-dd
): 日付形式を示す文字列を設定します。 カスタム日付形式は Datetime パターンの形式に従います。 これは、date 型に適用されます。timestampFormat
(既定値はyyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
): timestamp 形式を示す文字列を設定します。 カスタム日付形式は Datetime パターンの形式に従います。 これは、timestamp 型に適用されます。multiLine
(既定値はfalse
): 1 つのレコードを解析します。これはファイルで複数の行にまたがる場合があります。encoding
(既定では設定されていません): JSON ファイルに対して標準、基本、または拡張エンコードのいずれかを強制的に設定できます。 たとえば、UTF-16BE、UTF-32LE などです。 エンコードが指定されておらず、multiLine
がtrue
に設定されている場合は、自動的に検出されます。lineSep
(既定値には\r
、\r\n
、\n
のすべてが含まれる): 解析に使用する行区切り記号を定義します。samplingRatio
(既定値は 1.0): スキーマの推論に使用される入力 JSON オブジェクトの割合を定義します。dropFieldIfAllNull
(既定値はfalse
): スキーマの推論中に、null 値のみの列、または空の配列や構造体を無視するかどうか。locale
(既定値はen-US
):sets
IETF BCP 47 形式の言語タグとしてロケールを設定します。 たとえば、日付とタイムスタンプの解析中に使用されます。allowNonNumericNumbers
(既定値はtrue
): JSON パーサーが一連の非数値 (NaN
) トークンを有効な浮動小数点数値として認識することを許可します。+INF
: 正の無限大。また、+Infinity
とInfinity
の別名。-INF
: 負の無限大。-Infinity
の別名。NaN
: その他の非数値 (ゼロによる除算の結果など)。
readerCaseSensitive
(既定値はtrue
):rescuedDataColumn
が有効な場合、大文字と小文字の区別の動作を指定します。 true の場合、スキーマと大文字と小文字が異なる名前のデータ列を取り出します。それ以外の場合は、大文字と小文字を区別しない方法でデータを読み込みます。 Databricks SQL および Databricks Runtime 13.3 LTS 以降で使用できます。
返品
スキーマ定義と一致するフィールド名と型を備えた構造体。
例
> 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}