tigergraph 创建 字符串分割函数(c++)

tigergraph 3.1 图数据库 的有些内置函数不够完善,像字符串的分割等函数都没有,因此在翻阅了国外资料之后,将这个功能贴出来。由于tigergraph使用的是c++ 因此,在创建函数之前,要安装本地的c++,且c++版本必须是11。

如果按照官方提供的安装手册安装的话,自定义内置函数应给添加在 /home/tigergraph/tigergraph/app/3.1.0/dev/gdk/gsql/src/QueryUdf/ExprFunctions.hpp 中,具体的代码如下:

  //字符串分割
  inline ListAccum<string> string_split (string str, string delimiter) {
      ListAccum<string> newList;
      size_t pos = 0;
      std::string token;
      while ((pos = str.find(delimiter)) != std::string::npos) {
        token = str.substr(0, pos);
        newList += token;
        str.erase(0, pos + delimiter.length());
      }
      newList += str;
      return newList;
  }

代码添加完毕之后,想要可以使用,必须先要编译,tigergraph 提供了编译测试方式,编译方式在 /home/tigergraph/tigergraph/app/3.1.0/dev/gdk/gsql/src/QueryUdf/test文件夹下,使用命令  ./compile 来编译 ../ExprFunctions.hpp中的新函数。如果编译没有问题,则在tigergraph sudio的query 中可以直接使用。

需要注意的是,在compile文件中,g++ 命令后面的 -I 的路径可能错误,需要更改  -I$root_dir/gdk/gsdk/include/third_party/ 中的third_party ,应是thirdparty

原文地址:https://www.cnblogs.com/zhaohaidong/p/14600853.html