精华 Clickhouse 表函数介绍
发布于 1 年前 作者 theseusyang 1072 次浏览 来自 文档翻译

表函数介绍

表函数能够被指定在FROM 语句中,替代数据库和表名称. 表函数仅被应用于如果 ‘readonly’ 没有被设置,表函数与其他函数没有关联.

merge

merge(db_name, ‘tables_regexp’) 创建了一个临时 Merge 表. 对于更多信息, 请查看章节 “Table engines, Merge”.

表结构取自遇到的第一个与正则表达式匹配的表。

remote

remote(‘addresses_expr’, db, table[, ‘user’[, ‘password’]])

或者

remote(‘addresses_expr’, db.table[, ‘user’[, ‘password’]])

允许访问远程服务器而不创建分布式表。

addresses_expr - 一个表达式,生成远程服务器的地址.

这可能只是一个服务器地址。 服务器地址是主机:端口,或只是主机。 主机可以指定为服务器名称,也可以指定为IPv4或IPv6地址。 IPv6地址在方括号中指定。 该端口是远程服务器上的TCP端口。 如果端口被省略,它将使用服务器配置文件中的tcp_port(默认为9000)。

注意:除指定IPv6地址外,该端口是必需的。

示例:

example01-01-1

example01-01-1:9000

localhost

127.0.0.1

多个地址可以用逗号分隔。 在这种情况下,查询将转到所有指定的地址(如使用不同数据的分片)并使用分布式处理。

例如:

example01-01-1, example01-02-1 部分表达式可以在大括号中指定。 前面的例子可以写成如下:

example01-0{1,2}-1 大括号可以包含由两个点(非负整数)分隔的一系列数字。 在这种情况下,范围被扩展为一组生成碎片地址的值。 如果第一个数字从0开始,那么这些数值将以相同的0对齐方式形成。 前面的例子可以写成如下:

example01-{01…02}-1 如果你有多对大括号,它会生成相应集合的直接产物。

大括号中的地址和片段可以用管道(|)符号分开。 在这种情况下,相应的地址组被解释为副本,查询将被发送到第一个健康副本。 按照“load_balancing”设置中当前设置的顺序评估副本。

示例:

example01-{01…02}-{1|2} 这个例子指定了两个分别有两个副本的分片。

生成的地址数量受常数的限制。 现在这是1000个地址。

使用“远程”表功能不如创建分布式表最佳,因为在这种情况下,将为每个请求重新建立服务器连接。 另外,如果设置了主机名称,名称将被解析,并且在使用各种副本时不会计算错误。 在处理大量查询时,总是提前创建分布式表,而不要使用“远程”表函数。

'远程’表在如下的场景中是有用的:

  • 访问特定的服务器进行数据比较,调试和测试。

  • 在不同的 ClickHouse 集群之间进行查询,为了研究用途.

  • 偶尔分布式的请求是手工的。

  • 分布式请求,每次服务器集群都是重新定义的。

用户名可以省略。 在这种情况下,使用“默认”用户名。 密码可以省略。 在这种情况下,使用空密码。

回到顶部