適用対象:
Databricks SQL
Databricks Runtime
path から JSON オブジェクトを抽出します。
ヒント
新しいコードAzure Databricksでは、json データのクエリを実行するために、VARIANT データ型と : 演算子 を使用することをお勧めします。
VARIANT では、読み取りと書き込みのパフォーマンスが向上し、大文字と小文字が区別され、文字列ベースの JSON 解析よりも明確なセマンティクスが提供されます。 「 バリアントと JSON 文字列の違い」を参照してください。
構文
get_json_object(expr, path)
引数
-
expr: 整形式の JSON を含む文字列式。 -
path:$にルート化された JSONPath 式を含む STRING リテラル。 一般的なパターンについては、サポートされている構文と例に関するメモを参照してください。
戻り値
STRING。
オブジェクトが見つからない場合は、null 値が返されます。
例
-- Extract a top-level field
> SELECT get_json_object('{"a":"b"}', '$.a');
b
-- Extract a nested field
> SELECT get_json_object('{"a":{"b":"c"}}', '$.a.b');
c
-- Extract an array element by index
> SELECT get_json_object('{"items":["apple","pear"]}', '$.items[0]');
apple
-- Extract a field whose name contains a space
> SELECT get_json_object('{"first name":"Ada"}', '$["first name"]');
Ada
-- Extract a field whose name contains a dot, using bracket notation with double quotes
> SELECT get_json_object('{"ids":{"a.b":"42"}}', '$.ids["a.b"]');
42
-- Extract a field from every element of an array
> SELECT get_json_object('{"items":[{"n":1},{"n":2}]}', '$.items[*].n');
[1,2]
-- Returns NULL when the path does not match
> SELECT get_json_object('{"a":"b"}', '$.missing');
NULL
メモ
get_json_object では、 $に根ざした JSONPath 構文が使用されます。 ドット表記 (.field) によるフィールド アクセスでは大文字と小文字が区別されません。角かっこ表記 (['field'] または ["field"]) では大文字と小文字が区別されます。 これは、Azure Databricks JSON パス式: 演算子で使用されるVARIANT文字列と JSON 文字列を個別に照会する場合とは異なります。