2017-10-10 139 views
0

我想插入實驗數據到卡桑德拉,其中每個數據的精度爲15位小數。的樣本數據集如下:如何以15位精度存儲/顯示時間戳和雙列?

+------------------+-------------------+ 
| Sampling_Rate |  Value1  | 
+------------------+-------------------+ 
| 2.48979187011719 | 0.144110783934593 | 
+------------------+-------------------+ 

我想看到Sampling_Rate作爲曆元時間(即1970-01-01 00:00:02.48979187011719 + 0000),和值1到存儲其全部精確值。

對於這一點,我與描述表插入的數據:

CREATE TABLE project_fvag.temp (
    sampling_rate timestamp PRIMARY KEY, 
    value1 double) WITH bloom_filter_fp_chance = 0.01 
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'} 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'} 
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND crc_check_chance = 1.0 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99PERCENTILE'; 

我也改變了cqlshrc文件具有用於既浮動和雙精度增加。此外,更改日期時間格式:

datetimeformat = %Y-%m-%d %H:%M:%S.%.15f%z ;float_precision = 5 ;double_precision = 15 

儘管有這些更改,我仍然會將結果存儲爲時間戳和值中只有6個小數位。根據我的預期,存儲/查看什麼可能是更好的策略?

回答

0

對於採樣值:由於您將其設置爲時間戳,因此cassandra將以毫秒級的精度進行存儲。一種方法是將其存儲爲十進制。

這同樣適用於value1。重新爲您的表格創建小數點而不是雙倍值。

+0

但是我有嚴格的要求來顯示採樣率列值,就像這些「1970-01-01 00:00:02.48979187011719 + 0000」一樣。是否可以使用用戶定義的類型作爲。例如,<1970-01-01 00:00:02,0.48979187011719> 但是,我擔心的是: i)我想將此udt列作爲主鍵 ii)用戶應該能夠過濾基於查詢的在時間戳或udt的小數部分 我讀過cassandra的udt類型都遇到這兩個問題。糾正我,如果我錯了。謝謝。 –

+0

您可以創建你的表像這樣 'CREATE TABLE test.temp( myts時間戳, 採樣小數, 值1的小數, PRIMARY KEY(myts,採樣) )聚類ORDER BY(採樣ASC)' – Horia

相關問題