为什么 MIN() 和 MAX() 等本机 CQL 函数在 Amazon Keyspaces 中不起作用?

Why do native CQL functions like MIN() and MAX() not work in Amazon Keyspaces?

我正在尝试使用 python 在我的 aws 键空间 table 中检索列的最大值。 我把它作为 class

中的一种方法
        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." ```

AWS Keyspaces 仅支持一部分原生 CQL 函数。不支持 MIN()MAX() 等函数。

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

有关受支持的 Cassandra 函数的列表,请参阅 Built-in functions in Amazon Keyspaces

有关受支持的 Cassandra API 的列表,请参阅 Supported Cassandra APIs, operations, and data types in Amazon Keyspaces。干杯!

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

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

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

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