表函數(shù)
表函數(shù)能夠被指定在FROM 語句中,替代數(shù)據(jù)庫和表名稱. 表函數(shù)僅被應(yīng)用于如果?‘readonly’ 沒有被設(shè)置,表函數(shù)與其他函數(shù)沒有關(guān)聯(lián).
merge
merge(db_name,?'tables_regexp') 創(chuàng)建了一個臨時 Merge 表. 對于更多信息, 請查看章節(jié) “Table engines, Merge”.
表結(jié)構(gòu)取自遇到的第一個與正則表達式匹配的表。
remote
remote('addresses_expr',?db,?table[,?'user'[,?'password']])
或者
remote('addresses_expr',?db.table[,?'user'[,?'password']])
允許訪問遠程服務(wù)器而不創(chuàng)建分布式表搓彻。
addresses_expr?- 一個表達式,生成遠程服務(wù)器的地址.
這可能只是一個服務(wù)器地址。 服務(wù)器地址是主機:端口枉疼,或只是主機皮假。 主機可以指定為服務(wù)器名稱,也可以指定為IPv4或IPv6地址骂维。 IPv6地址在方括號中指定惹资。 該端口是遠程服務(wù)器上的TCP端口。 如果端口被省略航闺,它將使用服務(wù)器配置文件中的tcp_port(默認為9000)褪测。
注意:除指定IPv6地址外,該端口是必需的潦刃。
示例:
example01-01-1
example01-01-1:9000
localhost
127.0.0.1
[::]:9000
[2a02:6b8:0:1111::11]:9000
多個地址可以用逗號分隔侮措。 在這種情況下,查詢將轉(zhuǎn)到所有指定的地址(如使用不同數(shù)據(jù)的分片)并使用分布式處理乖杠。
例如:
example01-01-1, example01-02-1
部分表達式可以在大括號中指定分扎。 前面的例子可以寫成如下:
example01-0{1,2}-1
大括號可以包含由兩個點(非負整數(shù))分隔的一系列數(shù)字。 在這種情況下胧洒,范圍被擴展為一組生成碎片地址的值畏吓。 如果第一個數(shù)字從0開始,那么這些數(shù)值將以相同的0對齊方式形成卫漫。 前面的例子可以寫成如下:
example01-{01..02}-1
如果你有多對大括號菲饼,它會生成相應(yīng)集合的直接產(chǎn)物。
大括號中的地址和片段可以用管道(|)符號分開列赎。?在這種情況下宏悦,相應(yīng)的地址組被解釋為副本,查詢將被發(fā)送到第一個健康副本粥谬。?按照“l(fā)oad_balancing”設(shè)置中當前設(shè)置的順序評估副本肛根。
示例:
example01-{01..02}-{1|2}
這個例子指定了兩個分別有兩個副本的分片。
生成的地址數(shù)量受常數(shù)的限制漏策。 現(xiàn)在這是1000個地址派哲。
使用“遠程”表功能不如創(chuàng)建分布式表最佳,因為在這種情況下掺喻,將為每個請求重新建立服務(wù)器連接芭届。 另外,如果設(shè)置了主機名稱感耙,名稱將被解析褂乍,并且在使用各種副本時不會計算錯誤。 在處理大量查詢時即硼,總是提前創(chuàng)建分布式表逃片,而不要使用“遠程”表函數(shù)。
'遠程'表在如下的場景中是有用的:
- 訪問特定的服務(wù)器進行數(shù)據(jù)比較只酥,調(diào)試和測試褥实。
- 在不同的?ClickHouse 集群之間進行查詢呀狼,為了研究用途.
- 偶爾分布式的請求是手工的。
- 分布式請求损离,每次服務(wù)器集群都是重新定義的哥艇。
用戶名可以省略。 在這種情況下僻澎,使用“默認”用戶名貌踏。 密碼可以省略。 在這種情況下窟勃,使用空密碼祖乳。