我是一个没有-sql的新手,我的背景基于sql db(mysql)。 上个月我开始使用大数据,我选择cassandra作为no-sql db。
这是我的开发环境:
我的输入是包含许多列的每日csv文件,我只能导入其中一些列。 csv文件的结构 user_id =>文本
导入csv行的条件是什么? 列user_id + col_A + col_B + col_C的值必须是唯一的。
然后我想创建一个包含与列
一样多的主键的表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" csv文件,这就是我想要的。
导入后,我需要查询表,以获得按col_B值分组的唯一user_id(不重复)的总数。在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查询或者可能找到正确的数据建模。
你有任何提示吗?
提前谢谢
答案 0 :(得分:0)
看看柜台!!
http://www.datastax.com/documentation/cql/3.0/cql/cql_using/use_counter_t.html
您可以创建另一个表进行此计数
create table mycounts(count counter,user_id text,col_b int,PRIMARY KEY(user_id,col_b))
因此,无论何时插入unique_values表,都要插入mycounts表。然后当你查询时,只需从mycounts中选择*。我希望这有帮助!!