Cassandra で使いたいのですがSELECT DISTINCT
、Cassandra はこれらの操作をサポートしていないと思います。SELECT DISTINCT
Cassandraではどのようにすればよいですか? 出来ますか?
33098 次
3 に答える
21
CQL 3.1.1以降では、パーティション キーに対してのみ DISTINCT 操作がサポートされます。
SELECT ステートメントでパーティション キーを一覧表示できるようになりました (DISTINCT 修飾子を使用)。CASSANDRA-4536を参照してください。
select_statement ::= SELECT [ JSON | DISTINCT ] ( select_clause | '*' )
FROM table_name
[ WHERE where_clause ]
[ GROUP BY group_by_clause ]
[ ORDER BY ordering_clause ]
[ PER PARTITION LIMIT (integer | bind_marker) ]
[ LIMIT (integer | bind_marker) ]
[ ALLOW FILTERING ]
select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] )
selector ::= column_name
| term
| CAST '(' selector AS cql_type ')'
| function_name '(' [ selector ( ',' selector )* ] ')'
| COUNT '(' '*' ')'
where_clause ::= relation ( AND relation )*
relation ::= column_name operator term
'(' column_name ( ',' column_name )* ')' operator tuple_literal
TOKEN '(' column_name ( ',' column_name )* ')' operator term
operator ::= '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | CONTAINS | CONTAINS KEY
group_by_clause ::= column_name ( ',' column_name )*
ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*
于 2014-04-23T21:49:57.720 に答える
2
他の人が書いたように、Cassandra の列での個別のサポートはなく、主キーでのみサポートされています。cassandra でこれを行うには、次の 2 つのオプションがあります。
- アプリケーションでの処理 - サーバーからテーブル全体を読み込んでロードし、コードで個別に実行する必要があります。
- キーが区別したい列であるセカンダリテーブルを作成し、元のテーブルで操作を行うときにそこに二重挿入します。
2つの間の決定は、実際のデータ構造/サイズとニーズによって異なります。テーブルサイズが小さい場合、またはこの操作をほとんど行わない場合、テーブルが大きい場合、および/またはこれを行う場合、オプション1で十分かつ高速です。多くの場合、クエリは #2 を使用します。
于 2016-03-07T12:05:27.933 に答える