2014-10-02 1 views
7

Desidero verificare che le righe vengano aggiunte alla tabella. Quale dichiarazione di cql mostrerebbe lo ultimo numero di righe dalla tabella sottostante?Cassandra cql: come selezionare ULTIME n righe da una tabella

Descrizione tabella qui sotto:

cqlsh:timeseries> describe table option_data; 

CREATE TABLE option_data (
    ts bigint, 
    id text, 
    strike decimal, 
    callask decimal, 
    callbid decimal, 
    maturity timestamp, 
    putask decimal, 
    putbid decimal, 
    PRIMARY KEY ((ts), id, strike) 
) WITH 
    bloom_filter_fp_chance=0.010000 AND 
    caching='KEYS_ONLY' AND 
    comment='' AND 
    dclocal_read_repair_chance=0.100000 AND 
    gc_grace_seconds=864000 AND 
    index_interval=128 AND 
    read_repair_chance=0.000000 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'}; 

cqlsh:timeseries> 

risposta

12

Non hai specificato ultima n "per che cosa".

Per ottenere l'ultima N per id:

SELECT * FROM option_data WHERE ts=1 ORDER BY id DESC LIMIT N; 

ORDER BY può essere applicata solo alla seconda colonna in una chiave primaria composta. Se hai bisogno di interrogare per tempo dovrai pensare un po 'di più al tuo modello di dati.

Se le query sono più spesso "l'ultima N", si potrebbe considerare di scrivere qualcosa di simile:

CREATE TABLE time_series (
    id text, 
    t timeuuid, 
    data text, 
    PRIMARY KEY (id, t) 
) WITH CLUSTERING ORDER BY (t DESC) 

... dove 'id' è la serie storica id. L'ORDINE DI CLUSTER inverte l'ordine di timeuuid 't', causando la memorizzazione delle celle in un ordine naturale per la tua query.

Con questo, si otterrebbe gli ultimi cinque eventi come segue:

SELECT * FROM time_series WHERE id='stream id' LIMIT 5; 

C'è un sacco di informazioni là fuori per le serie temporali a Cassandra. Suggerisco di leggere alcuni degli articoli più recenti sull'argomento. Questo è conciso e relativamente recente: http://www.datastax.com/documentation/tutorials/Time_Series.pdf

+1

Adam grazie. – Ivan