저는 SQL이없는 최신 버전이고 내 배경은 sql db (mysql)을 기반으로합니다. 지난 달 큰 데이터로 작업하기 시작했고 cassandra를 no-SQL db로 선택했습니다.cassandra - cql - csv 파일에서 가져온 데이터를 카운트하고 그룹화하십시오.
이 내 dev에 환경입니다 :
- 우분투 12.04 64 비트
- cqlsh 4.1.1
- 카산드라 2.0.6
- CQL 사양 3.1.1
- 드리프트 프로토콜 19.39.0
내 입력은 많은 열이있는 일일 csv 파일이므로 가져와야합니다. 이 열 중 일부만 있습니다. CSV 파일 USER_ID => 텍스트
- col_A => INT
- col_B => INT
- col_C => INT
- other_col => 가져 오지 않은
- 의 구조 ... ..
- .....
- .....
- other_col =이> 가져올 수 없습니다
csv 행을 가져 오기위한 조건은 무엇입니까? user_id + col_A + col_B + col_C 열의 값은 고유해야합니다.
는 그럼 난 CSV 파일의 열을 가져 오는 동안CREATE TABLE unique_value (
user_id text,
col_A int,
col_B int,
col_C int,
PRIMARY KEY (user_id, col_A, col_B, col_C)
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};
이 조합의 단지 고유 값을 삽입 할 것 "USER_ID + col_A + col_B + col_C"많은 기본 키 테이블을 만들 생각 그게 내가 원하는거야.
가져온 후 고유 한 user_id (중복되지 않음)의 총 수를 col_B의 값으로 그룹화하려면 테이블을 쿼리해야합니다. SQL에서 쿼리는
SELECT COUNT(b.user_id), b.col_B(
(SELECT COUNT(user_id) AS is_user_exclusive, user_id, col_B FROM unique_value
GROUP BY col_B
HAVING is_user_exclusive < 2) AS b
GROUP BY b.col_B
이어야합니다. 그러나 여전히 올바른 cql 쿼리 또는 아마도 올바른 데이터 모델링을 찾을 수 없습니다.
어떤 힌트가 있습니까?
미리 감사드립니다.