设置全局设置配置,而不是在 ClickHouse 上使用任何功能
Posted
技术标签:
【中文标题】设置全局设置配置,而不是在 ClickHouse 上使用任何功能【英文标题】:Set global settings configuration instead of use ANY function on ClickHouse 【发布时间】:2020-06-28 13:15:53 【问题描述】:Based on the documentation,ClickHouse(与 mysql 不同)要求 SELECT、HAVING 和 ORDER BY 子句中的所有表达式都根据键或聚合函数计算。
有时我们只需要让场外的团队,但仍将其他人分组。我知道这样做的利弊。
我知道要获得类似 MySQL 的行为,您可以将其他列放在任何聚合函数中。
我试图在 sql_mode (MySql) 之类的 SETTINGS 上找到来改变这种行为。我知道我们可以使用 any 功能,但默认情况下启用此设置会更容易。
【问题讨论】:
为什么ANY()
聚合函数这么难用?它使您的代码对以后必须维护它的人来说更加清晰。允许来自分组查询的非严格结果可能会导致困难的调试情况。我建议您允许默认的 sql_mode
强制执行标准语义。 ClickHouse 行为正确。
我的应用程序在后台为用户构建 CH sql,同时该用户拖动字段/计算列。有时,当我们必须根据用户想要构建的内容来决定对什么进行分组/排序时,这并不容易!
我很抱歉。我忘记了 MySQL 没有ANY()
函数(参见Aggregate Function Descriptions)。不过,您不应允许用户创建结果不明确的查询。
【参考方案1】:
CH 中没有这样的设置。并且没有计划实施这种非 SQL 行为。
【讨论】:
您在回答有关 ClickHouse 的问题吗?因为我理解这个问题是询问如何放松 MySQL 中的行为,并且有可能做到这一点。虽然我建议保持标准行为。 @BillKarwin 是的,我回答了关于 CH 的问题。唯一的方法是显式使用 ANY 函数以上是关于设置全局设置配置,而不是在 ClickHouse 上使用任何功能的主要内容,如果未能解决你的问题,请参考以下文章
clickhouse,硬件管理与优化(cpu,内存,网络,存储,操作系统配置),profile管理,Quotas设置,约束管理,查询权限,用户管理配置等