もう少し正確ではない日付列をキー入力することでこれを解決できると思います。
CREATE TABLE mau(
month bigint,
d timestamp,
userid text,
PRIMARY KEY (month,d,userId));
は、その後、あなたが特定の月を照会できます:
毎月のユーザーのために、このような何かがうまくいく
SELECT d, userid FROM may WHERE month=201603;
そして、あなたはまた、範囲を照会することができます:
SELECT d, userid FROM mau WHERE month=201603
AND d>'2016-03-21 19:40:00+0000' AND d<'2016-03-21 19:50:00+0000';
d | userid
--------------------------+--------
2016-03-21 19:40:13+0000 | tron
2016-03-21 19:40:20+0000 | yori
2016-03-21 19:40:28+0000 | quorra
2016-03-21 19:40:36+0000 | paige
(4 rows)
month
があなたに適しているかどうかは、予想される行の数によって異なります1カ月あたりのヒット数、そしてそれがカサンドラのパーティションあたりの20億セルの限界に近づくことになるでしょう。念頭に置いて、それはこのように、またday
によって分割する、おそらく良いアイデアだとベアリング:もちろん
CREATE TABLE mau(
month bigint,
day bigint,
d timestamp,
userid text,
PRIMARY KEY ((month,day),d,userId));
、あなたは一度に月全体照会することができないであろう。しかし、そのアプローチを使いこなし、アプリケーションに適したPRIMARY KEY戦略が見つかるかどうかを確認してください。
EDIT 20160323
だから、 "ユニーク" ログインをカウントするために、私は、 "SELECT COUNT(*)の個別のuserId" またはsomesuchを行う必要があります。私はCassandraの独特のものに深く慣れていませんが、私はそれがパーティションキーで動作することを知っています。このスキーマのパーティションキーが3つの列(月、d、userId)の組み合わせであるとすれば、userIdだけで別個にカウントされますか?
いいえ、count
は、iteslfのuseridでは機能しません。まず、PRIMARY KEYコンポーネントをスキップすることはできません。第二に、カサンドラでは、クエリベースのモデリング手法をとる必要があります。ログインしていた別個のユーザーIDを照会する必要がある場合は、それをサポートするために新しい表を作成する必要があります。もたらすであろう
SELECT * FROM logins_by_user ;
userid | d
--------+--------------------------
quorra | 2016-03-21 19:40:28+0000
paige | 2016-03-21 19:40:36+0000
tron | 2016-03-22 19:37:53+0000
tron | 2016-03-21 19:40:13+0000
yori | 2016-03-21 19:40:20+0000
(5 rows)
ユニークユーザーIDの問い合わせ:
CREATE TABLE logins_by_user (
userid text,
d timestamp,
PRIMARY KEY(userid,d))
WITH CLUSTERING ORDER BY (d DESC);
のは、私が二度目の中に、そのユーザー「トロン」のログを除いて、上記と同じデータを持っているとしましょう
SELECT DISTINCT userid FROM logins_by_user ;
userid
--------
quorra
paige
tron
yori
(4 rows)
これがまさにあなたが探しているものであるかどうかはわかりませんが、そのアイデアがあなたを正しい方向に導いてくれることを願っています。
"ユニークな"ログインをカウントするには、 "select count(*)distinct userId"などを実行する必要があります。私はCassandraの独特のものに深く慣れていませんが、私はそれがパーティションキーで動作することを知っています。このスキーマのパーティションキーが3つの列(月、d、userId)の組み合わせであるとすれば、userIdだけで別個にカウントされますか?ありがとう! – Adam
@Adam Edit made。 – Aaron