2016-08-01 4 views
0

の「マップ・エントリーの平等が凍結されたマップの列device_detailsに述語サポートされていない」私は次のテーブルがあります。カサンドラ無効なクエリ

CREATE TABLE dove.backend_events (
log_time_local timeuuid, 
username text, 
log_type text, 
log_time timestamp, 
device_category text, 
log text, 
device_details frozen<map<text, text>>, 
PRIMARY KEY (log_time_local, username, device_details) 
); 

を、私はこのクエリを実行しています:SELECT * FROM dove.backend_events WHERE device_details['category'] = 'mobile' ALLOW FILTERING;

私はこのエラーを取得しています:InvalidRequest: code=2200 [Invalid query] message="Map-entry equality predicates on frozen map column device_details are not supported"

何が原因で、どのように修正するのですか? device_detailsがプライマリキーの一部でなく、フリーズしていない場合、このエラーは発生しません。

答えて

0

あなたは代わりに主キー(およびそれを凍結せず)として、それを設定するのでdevice_detailsのインデックスを追加することができます。

CREATE TABLE dove.backend_events (
log_time_local timeuuid, 
username text, 
log_type text, 
log_time timestamp, 
device_category text, 
log text, 
device_details map<text, text>, 
PRIMARY KEY (log_time_local, username) 
); 

CREATE INDEX dove.device_details_index ON dove.backend_events (ENTRIES(device_details)); 

あなたが効率的にクエリを実行し、ALLOW FILTERINGを使用することなく、可能性があり、この方法は:

SELECT * FROM dove.backend_events WHERE device_details['category'] = 'mobile'; 
関連する問題