from_json 函式 (Databricks SQL)

傳回具有 jsonStrschema 的結構值。

語法

from_json(jsonStr, schema [, options])

引數

  • jsonStr:指定 json 檔的 STRING 運算式。
  • schemaDatabricks SQL) (schema_of_json 函式的 STRING 常值或調用。
  • options:選擇性的 MAP < STRING,STRING > 常值指定指示詞。

傳回

結構,具有符合架構定義的功能變數名稱和型別。

jsonStr在 和 options 方面 schema ,應該是格式正確的 。 schema 必須定義為逗號分隔的資料行名稱和資料類型組,例如 CREATE TABLE

options如果提供,可以是下列任一項:

  • primitivesAsString (預設 false) :將所有基本值推斷為字串類型。
  • prefersDecimal (預設 false) :將所有浮點值推斷為十進位類型。 如果值不符合小數,則會將其推斷為雙精度浮點數。
  • 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 模式 (Databricks SQL) 的格式。 這適用于日期類型。
  • timestampFormat (預設 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]) :設定指出時間戳記格式的字串。 自訂日期格式遵循 Datetime 模式 (Databricks SQL) 的格式。 這適用于時間戳記類型。
  • multiLine (預設 false) :剖析一筆記錄,每個檔案可能會跨越多行。
  • 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 代表其他非數位,例如除以零的結果。

範例

> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
 {1,0.8}

> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {2015-08-26 00:00:00}