美文网首页
Clickhouse 表函数介绍

Clickhouse 表函数介绍

作者: c3729438b799 | 来源:发表于2017-12-31 22:47 被阅读1100次

    表函数

    表函数能够被指定在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

    [::]:9000

    [2a02:6b8:0:1111::11]:9000

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

    例如:

    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 集群之间进行查询,为了研究用途.

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

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

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

    相关文章

      网友评论

          本文标题:Clickhouse 表函数介绍

          本文链接:https://www.haomeiwen.com/subject/yutzgxtx.html