關於如何在vertica上使用MySQL的group_concat()函數

今天遇到客戶在使用vertica的時候,想使用MySQL的group_concat()函數。

GROUP_CONCAT函數返回一個字符串結果,該結果由分組中的值連接組合而成。由於這個函數在vertica中是沒有的。所以需要自己開發。幸好有人已經將該第三方的擴展包已經寫好了。這裏簡單敘述一下在vertica中如何使用。

首先去下載能實現group_concat()函數的擴展包,這裏是下載地址。下載好後拷貝到vertica的服務器上。

用root用戶解壓該包。

[root@v001 ] unzip vertica-package.zip

改變這個文件夾的所屬者。

[root@v001] chown -R dbadmin:verticadba vertica-package/

切換到dbadmin用戶。

[root@v001] su - dbadm

進入到解壓好的那個文件夾

[dbadmin@v001 ] cd vertica-package/

在文件下有很多擴展包,我們只需要string-package這個包,因爲這個包裏包含有group_concat()函數

1513151204(1).jpg

進入該文件夾

[dbadmin@v003 vertica-package]$ cd strings_package/

通過readme.md知道,需要先編譯再安裝

如果出現無法編譯:則執行如下語句:

[root@v001 ]yum -y groupinstall "Development tools" && yum -y groupinstall "Additional Development"

1513151469(1).jpg

[dbadmin@v003 strings_package]$ make
[dbadmin@v003 strings_package]$ make install

提示如下信息就算安裝成功。

1513151518(1).jpg

接下來進行測試:

連接數據庫:

輸入:

dbadmin=> select group_concat(node_name) over () from nodes;

輸出結果:

1513151698(1).jpg

再測試如下語句:

dbadmin=> select schema_name,projection_name,group_concat(node_name) over (partition by schema_name,projection_name) from (select distinct node_name,schema_name,projection_name
 from storage_containers) sc order by schema_name, projection_name;

輸出結果:

1513151865(1).jpg

可以看到它已經實現了MySQL的group_concat()的功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章