2016-10-15 5 views
1

に私はテーブルcitus 5.2Postgresのクラスタ(citus):範囲クエリ、ネストされたjsonb列

を使用してクラスタとして構成postgresの9.5.4を使用していますが、コマンドの下に使用してシャードてきました。

SELECT master_create_distributed_table('mytest', 'id', 'hash'); 
SELECT master_create_worker_shards('mytest', 16, 1); 

jsonb列に格納されたサンプルのJSONデータの下から、私は、これは、1つのユーザのレコードのサンプルです

o['mid'] > 7000 

に一致するレコードを検索したいと思います。そのようなユーザーは何百万人もいるでしょう。

{ "uid": 14105529, "o": [ 
    { 
     "mid": 6551, 
     "ac": 1913, 
     "ip": "144.36.233.44", 
     "adw": 5, 
     "at": 133000, 
     "ad": 151015, 
     "aid": 0 
    }, 
    { 
     "mid": 7552, 
     "ac": 1913, 
     "ip": "144.36.233.44", 
     "adw": 5, 
     "at": 133000, 
     "ad": 151015, 
     "aid": 0 
    }, 
    { 
     "mid": 7553, 
     "ac": 1913, 
     "ip": "144.36.233.44", 
     "adw": 5, 
     "at": 133000, 
     "ad": 151015, 
     "aid": 0 
    } ] 
} 

以下のクエリはエラーをスローします。ここでは、非シャード化されたテーブルで実行されます。

select count(1) from mytest,jsonb_array_elements(data->'l') where (value->>'e')::bigint>7000; 

ERROR: cannot perform distributed planning on this query

DETAIL: Complex table expressions are currently unsupported

答えて

3

jsonb_array_elements(data->'l')避けるために、このクエリが拒否取得する原因に作成するCTEは、あなたが再書き込み可能性があなたのクエリをジョインを引き起こしていますか?

関連する問題