datafusion functions json
v0.43.0 2024-11-13
참고: 이는 공식 Apache Software Foundation 릴리스가 아닙니다. datafusion-contrib/datafusion-functions-json#5를 참조하세요.
이 크레이트는 DataFusion에서 JSON 문자열을 쿼리하기 위한 함수 세트를 제공합니다. 함수는 SQL 쿼리에 사용할 수 있는 스칼라 함수로 구현됩니다.
이러한 기능을 사용하려면 다음을 호출하면 됩니다.
datafusion_functions_json :: register_all ( & mut ctx ) ? ;
SessionContext
에 아래 JSON 함수를 등록합니다.
-- Create a table with a JSON column stored as a string
CREATE TABLE test_table (id INT , json_col VARCHAR ) AS VALUES
( 1 , ' {} ' ),
( 2 , ' { "a": 1 } ' ),
( 3 , ' { "a": 2 } ' ),
( 4 , ' { "a": 1, "b": 2 } ' ),
( 5 , ' { "a": 1, "b": 2, "c": 3 } ' );
-- Check if each document contains the key 'b'
SELECT id, json_contains(json_col, ' b ' ) as json_contains FROM test_table;
-- Results in
-- +----+---------------+
-- | id | json_contains |
-- +----+---------------+
-- | 1 | false |
-- | 2 | false |
-- | 3 | false |
-- | 4 | true |
-- | 5 | true |
-- +----+---------------+
-- Get the value of the key 'a' from each document
SELECT id, json_col - > ' a ' as json_col_a FROM test_table
-- +----+------------+
-- | id | json_col_a |
-- +----+------------+
-- | 1 | {null=} |
-- | 2 | {int=1} |
-- | 3 | {int=2} |
-- | 4 | {int=1} |
-- | 5 | {int=1} |
-- +----+------------+
json_contains(json: str, *keys: str | int) -> bool
- JSON 문자열에 특정 키가 있는 경우 true( ?
연산자에 사용됨) json_get(json: str, *keys: str | int) -> JsonUnion
- "경로"를 통해 JSON 문자열에서 값을 가져옵니다. json_get_str(json: str, *keys: str | int) -> str
- "경로"를 통해 JSON 문자열에서 문자열 값을 가져옵니다. json_get_int(json: str, *keys: str | int) -> int
- "경로"를 통해 JSON 문자열에서 정수 값을 가져옵니다. json_get_float(json: str, *keys: str | int) -> float
- "경로"를 통해 JSON 문자열에서 부동 소수점 값을 가져옵니다. json_get_bool(json: str, *keys: str | int) -> bool
- "경로"를 통해 JSON 문자열에서 부울 값을 가져옵니다. json_get_json(json: str, *keys: str | int) -> str
- "경로"를 통해 JSON 문자열에서 중첩된 원시 JSON 문자열을 가져옵니다. json_as_text(json: str, *keys: str | int) -> str
- 문자열로 표시되는 "경로"를 통해 JSON 문자열에서 값을 가져옵니다( ->>
연산자에 사용됨). json_length(json: str, *keys: str | int) -> int
- JSON 문자열 또는 배열의 길이를 가져옵니다. ->
연산자 - json_get
의 별칭 ->>
연산자 - json_as_text
의 별칭 ?
연산자 - json_contains
의 별칭 json_get
사용한 캐스트 표현식은 적절한 메소드로 다시 작성됩니다. 예:
select * from foo where json_get(attributes, ' bar ' )::string = ' ham '
다음으로 다시 작성됩니다.
select * from foo where json_get_str(attributes, ' bar ' ) = ' ham '
json_keys(json: str, *keys: str | int) -> list[str]
- JSON 문자열의 키를 가져옵니다. json_is_obj(json: str, *keys: str | int) -> bool
- JSON이 객체인 경우 true json_is_array(json: str, *keys: str | int) -> bool
- JSON이 배열인 경우 true json_valid(json: str) -> bool
- JSON이 유효한 경우 true