ClickHouse 中 WHERE 子句中 UInt64 字段的条件
Condition on UInt64 field in WHERE clause in ClickHouse
在 ClickHouse Playground 中,UInt64 字段的数据集条件似乎不起作用。例如查询:
SELECT * FROM hits_100m_obfuscated where WatchID = 8120543446287443000
没有 return 任何东西(即使我从数据集中复制了 ID)。如果条件在 UserID 上,则同样如此。但以下工作正常:
SELECT * FROM hits_100m_obfuscated where ClientIP = 3078276782
我猜原因是 ClientIP 字段的类型是 UInt32,但 UserID 和 WatchID 都是 UInt64。我尝试使用 toUInt64 和 CAST,但没有成功。
知道我做错了什么吗?
看来是Playground的bug
作为临时解决方法,您可以使用最喜欢的 HTTP API 客户端(例如 Postman、Fiddler、curl 等)向服务端点发送直接请求:
curl "https://play.clickhouse.tech/api/v20.3/?database=datasets&user=playground&password=clickhouse&query=SELECT+*+FROM+hits_100m_obfuscated+where+WatchID=8927014313511165737+limit+1+format+Vertical"
seems web/frontend issue
SELECT '- '||toString(max(WatchID))||' -', max(WatchID), toString(max(WatchID)) FROM hits_100m_obfuscated
- 9223372033328793741 - | 9223372033328794000 | 9223372033328794000
在 ClickHouse Playground 中,UInt64 字段的数据集条件似乎不起作用。例如查询:
SELECT * FROM hits_100m_obfuscated where WatchID = 8120543446287443000
没有 return 任何东西(即使我从数据集中复制了 ID)。如果条件在 UserID 上,则同样如此。但以下工作正常:
SELECT * FROM hits_100m_obfuscated where ClientIP = 3078276782
我猜原因是 ClientIP 字段的类型是 UInt32,但 UserID 和 WatchID 都是 UInt64。我尝试使用 toUInt64 和 CAST,但没有成功。
知道我做错了什么吗?
看来是Playground的bug
作为临时解决方法,您可以使用最喜欢的 HTTP API 客户端(例如 Postman、Fiddler、curl 等)向服务端点发送直接请求:
curl "https://play.clickhouse.tech/api/v20.3/?database=datasets&user=playground&password=clickhouse&query=SELECT+*+FROM+hits_100m_obfuscated+where+WatchID=8927014313511165737+limit+1+format+Vertical"
seems web/frontend issue
SELECT '- '||toString(max(WatchID))||' -', max(WatchID), toString(max(WatchID)) FROM hits_100m_obfuscated
- 9223372033328793741 - | 9223372033328794000 | 9223372033328794000