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