设置全局设置配置,而不是在 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 用户名密码设置

clickhouse,硬件管理与优化(cpu,内存,网络,存储,操作系统配置),profile管理,Quotas设置,约束管理,查询权限,用户管理配置等

clickhouse tabix 设置中的最大执行时间

ClickHouse安装(集群版)

MySQL设置global变量和session变量

clickhouse 修改配置