我正在尝试使用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)})
,并根据调度更新它们。