问题描述
我的功能有误。
self.client
是Click House驱动程序--- from clickhouse_driver import Client
def multi_get(self,keys: str) -> dict:
if not self.initialized:
self.make_table()
keys_joined = "'" + "','".join(keys) + "'"
print(f"PPPP_1 {keys_joined}") # 4
found = self.client.execute(
f'SELECT max(arrivalTime),key,argMax(data,arrivalTime)'
f' FROM {self.database}.cache'
f' WHERE key in ({keys_joined})'
f' and arrivalTime > Now() - INTERVAL {self.expiration_interval}'
' GROUP BY key'
)
receive_packet中的文件“ /home/alex/.local/lib/python3.6/site-packages/clickhouse_driver/client.py”,第118行 引发packet.exception clickhouse_driver.errors.ServerException:代码:62。 DB :: Exception:语法错误:在位置137('GROUP')处失败:GROUP BY键。预期的值之一:HOUR,DD,sql_TSI_QUARTER,S,sql_TSI_YEAR,YEAR,LIKE,
解决方法
错误消息试图告诉您。
这里:
and arrivalTime > now() - INTERVAL {self.expiration_interval}
这将生成无效的SQL。 INTERVAL
需要一个单位,例如INTERVAL 1 HOUR
,否则。可以找到受支持的类型的列表in the documentation:
SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR
也许你想要
and arrivalTime > now() - INTERVAL {self.expiration_interval} HOUR