mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 03:22:14 +00:00
82 lines
5.2 KiB
SQL
82 lines
5.2 KiB
SQL
-- Tags: long
|
|
|
|
set allow_experimental_json_type = 1;
|
|
set max_block_size = 1000;
|
|
|
|
drop table if exists test;
|
|
|
|
create table test (json JSON) engine=MergeTree order by tuple();
|
|
insert into test select multiIf(number < 1000, '{}'::JSON, number < 3000, '{"a" : 42, "b" : "Hello"}'::JSON, '{"c" : [1, 2, 3], "d" : "2020-01-01"}'::JSON) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(json)) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(json)) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(json)) as path from test order by path;
|
|
|
|
truncate table test;
|
|
insert into test select multiIf(number < 1000, '{"a" : 42, "b" : "Hello"}'::JSON, number < 3000, '{"c" : [1, 2, 3], "d" : "2020-01-01"}'::JSON, '{"e" : 43, "f" : ["s1", "s2", "s3"]}'::JSON) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(json)) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(json)) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(json)) as path from test order by path;
|
|
|
|
drop table test;
|
|
create table test (json JSON(max_dynamic_paths=2)) engine=MergeTree order by tuple();
|
|
insert into test select multiIf(number < 1000, '{}'::JSON(max_dynamic_paths=2), number < 3000, '{"a" : 42, "b" : "Hello"}'::JSON(max_dynamic_paths=2), '{"c" : [1, 2, 3], "d" : "2020-01-01"}'::JSON(max_dynamic_paths=2)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(json)) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(json)) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(json)) as path from test order by path;
|
|
|
|
truncate table test;
|
|
insert into test select multiIf(number < 1000, '{"a" : 42, "b" : "Hello"}'::JSON(max_dynamic_paths=2), number < 3000, '{"c" : [1, 2, 3], "d" : "2020-01-01"}'::JSON(max_dynamic_paths=2), '{"e" : 43, "f" : ["s1", "s2", "s3"]}'::JSON(max_dynamic_paths=2)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(json)) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(json)) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(json)) as path from test order by path;
|
|
|
|
truncate table test;
|
|
insert into test select multiIf(number < 1000, '{"a" : 42}'::JSON(max_dynamic_paths=2), number < 3000, '{"b" : "Hello", "c" : [1, 2, 3], "d" : "2020-01-01"}'::JSON(max_dynamic_paths=2), '{"e" : 43}'::JSON(max_dynamic_paths=2)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(json)) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(json)) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(json)) as path from test order by path;
|
|
|
|
drop table test;
|
|
create table test (json JSON(max_dynamic_paths=8)) engine=MergeTree order by tuple();
|
|
insert into test select multiIf(number < 1000, '{}'::JSON(max_dynamic_paths=8), number < 3000, materialize('{"a" : [{"b" : 42, "c" : [1, 2, 3]}]}')::JSON(max_dynamic_paths=8), materialize('{"a" : [{"d" : "2020-01-01", "e" : "Hello"}]}')::JSON(max_dynamic_paths=8)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
|
|
truncate table test;
|
|
insert into test select multiIf(number < 1000, materialize('{"a" : [{"b" : 42, "c" : [1, 2, 3]}]}')::JSON(max_dynamic_paths=8), number < 3000, materialize('{"a" : [{"d" : "2020-01-01", "e" : "Hello"}]}')::JSON(max_dynamic_paths=8), materialize('{"a" : [{"f" : "2020-01-01 00:00:00", "g" : "Hello2"}]}')::JSON(max_dynamic_paths=8)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
|
|
truncate table test;
|
|
insert into test select multiIf(number < 1000, materialize('{"a" : [{"b" : 42}]}')::JSON(max_dynamic_paths=8), number < 3000, materialize('{"a" : [{"d" : "2020-01-01", "e" : "Hello"}]}')::JSON(max_dynamic_paths=8), materialize('{"a" : [{"f" : "2020-01-01 00:00:00"}]}')::JSON(max_dynamic_paths=8)) from numbers(20000);
|
|
select 'All paths';
|
|
select distinct arrayJoin(JSONAllPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Dynamic paths';
|
|
select distinct arrayJoin(JSONDynamicPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
select 'Shared data paths';
|
|
select distinct arrayJoin(JSONSharedDataPaths(arrayJoin(json.a[]))) as path from test order by path;
|
|
|
|
drop table test; |