为什么像MIN()和MAX()这样的本地CQL函数不能在Amazon Keyspaces中工作? &g



我正在尝试使用python检索我的aws keyspace表中列的最大值。我把它作为类

中的一个方法
query = SimpleStatement('select min (timestamp) from '  + keyspace + '.'+ table_name) #+ ' limit 2'
read = self.session.execute(query)

return read.current_rows

这是我的read函数,我叫它

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函数列表,请参见Amazon Keyspaces中的内置函数。

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

像sum, min, max, avg和count这样的函数是不确定的,并且由于在相同的C*节点或大分区上配置存储和计算或分散收集多行/分区而产生不可预测的性能。

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

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

,并根据调度更新它们。

相关内容

  • 没有找到相关文章

最新更新