fungsi fusi data json
v0.43.0 2024-11-13
Catatan: Ini bukan rilis resmi Apache Software Foundation, lihat datafusion-contrib/datafusion-functions-json#5.
Peti ini menyediakan serangkaian fungsi untuk menanyakan string JSON di DataFusion. Fungsi tersebut diimplementasikan sebagai fungsi skalar yang dapat digunakan dalam kueri SQL.
Untuk menggunakan fungsi ini, Anda hanya perlu menelepon:
datafusion_functions_json :: register_all ( & mut ctx ) ? ;
Untuk mendaftarkan fungsi JSON di bawah ini di SessionContext
Anda.
-- 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
- true jika string JSON memiliki kunci tertentu (digunakan untuk operator ?
) json_get(json: str, *keys: str | int) -> JsonUnion
- Dapatkan nilai dari string JSON berdasarkan "jalur" -nya json_get_str(json: str, *keys: str | int) -> str
- Dapatkan nilai string dari string JSON berdasarkan "jalur" -nya json_get_int(json: str, *keys: str | int) -> int
- Dapatkan nilai integer dari string JSON berdasarkan "jalur" -nya json_get_float(json: str, *keys: str | int) -> float
- Dapatkan nilai float dari string JSON berdasarkan "jalur" -nya json_get_bool(json: str, *keys: str | int) -> bool
- Dapatkan nilai boolean dari string JSON berdasarkan "jalur" -nya json_get_json(json: str, *keys: str | int) -> str
- Dapatkan string JSON mentah bersarang dari string JSON berdasarkan "jalurnya" json_as_text(json: str, *keys: str | int) -> str
- Dapatkan nilai apa pun dari string JSON dengan "jalurnya", yang direpresentasikan sebagai string (digunakan untuk operator ->>
) json_length(json: str, *keys: str | int) -> int
- dapatkan panjang string atau array JSON ->
operator - alias untuk json_get
->>
operator - alias untuk json_as_text
?
operator - alias untuk json_contains
Ekspresi pemeran dengan json_get
ditulis ulang ke metode yang sesuai, misalnya
select * from foo where json_get(attributes, ' bar ' )::string = ' ham '
Akan ditulis ulang menjadi:
select * from foo where json_get_str(attributes, ' bar ' ) = ' ham '
json_keys(json: str, *keys: str | int) -> list[str]
- dapatkan kunci string JSON json_is_obj(json: str, *keys: str | int) -> bool
- true jika JSON adalah sebuah objek json_is_array(json: str, *keys: str | int) -> bool
- true jika JSON adalah array json_valid(json: str) -> bool
- true jika JSON valid