3

我正在尝试使用 python 在我的 aws 键空间表中检索列的最大值。我把它作为类中的一种方法

        query = SimpleStatement('select min (timestamp) from '  + keyspace + '.'+ table_name) #+ ' limit 2'
        read = self.session.execute(query)
        
        return read.current_rows

那是我的读取功能,我称之为:

access.read_latest_timestamp('gdapp_finance','policy_test').

我收到以下错误。有人可以帮助我吗?

InvalidRequest                            Traceback (most recent call last)
/tmp/ipykernel_223/2808458841.py in <module>
----> 1 access.read_latest_timestamp('gdapp_finance','policy_test')

/tmp/ipykernel_223/1193162473.py in read_latest_timestamp(self, keyspace, table_name)
     58         query = SimpleStatement('select min (timestamp) from '  + keyspace + '.'+ table_name , \
     59                                consistency_level=ConsistencyLevel.ONE) #+ ' limit 2'
---> 60         read = self.session.execute(query)
     61 
     62         return read.current_rows

~/.local/lib/python3.9/site-packages/cassandra/cluster.cpython-39-x86_64-linux-gnu.so in cassandra.cluster.Session.execute()

~/.local/lib/python3.9/site-packages/cassandra/cluster.cpython-39-x86_64-linux-gnu.so in cassandra.cluster.ResponseFuture.result()

InvalidRequest: Error from server: code=2200 [Invalid query] message="min is not yet supported." ```
4

2 回答 2

3

AWS Keyspaces 仅支持原生 CQL 函数的子集。不支持MIN()和之类的功能。MAX()

同样,也不支持用户定义的函数和聚合。

有关支持的 Cassandra 函数的列表,请参阅Amazon Keyspaces 中的内置函数

有关支持的 Cassandra API 列表,请参阅Amazon Keyspaces 中支持的 Cassandra API、操作和数据类型。干杯!

于 2021-09-08T11:52:43.460 回答
3

sum、min、max、avg 和 count 等函数不是确定性的,并且由于在同一个 C* 节点或大型分区或分散聚集多个行/分区上并置存储和计算而提供不可预测的性能。

我建议编写一个自定义 Lambda 并针对 Keyspaces 运行它,或者存储一个聚合行

(假设我的分区中的第一行/最后一行存储所有聚合,例如 {pk, _#sk, col1=min(col1), col2=max(col2),..., col3=count(col3) })

在一个分区内并根据计划更新它们。

于 2021-09-09T19:40:15.117 回答