10 流数据表中如果保存float数组

定义流数据表时,能不能定义数组类型,去保存数组数据

例子大概如下,DT_FLOAT_ARRAY看这像是支持,有能提供一个列子吗?

 //解析结构体,取数
            OEM_REPORT *report = (OEM_REPORT *)data;
            //定义变量
            vector<ConstantSP> args;
            //创建表
            vector <string> colNames = {
                "LABEL",     "TIME",     "FOOT",     "OPENDATE",  "OPENTIME",
                "CLOSEDATE", "OPEN",     "HIGH",     "LOW",       "CLOSE",
                "VOLUME",    "AMOUNT",   "INVOL",    "PRICESELL", "VOLSELL",
                "VSELLCHA",  "PRICEBUY", "VOLBUY",   "VBUYCHA",   "JINGJIA",
                "AVPRICE",   "ISBUY",    "NOWV",     "NOWA",      "CHANGE",
                "WEIBI",     "LIANGBI",  "POSITION", "LAST",      "LIMITUP",
                "LIMITDOWN", "TRADINGDAY"};
            vector<DATA_TYPE> colTypes = {
                DT_SYMBOL,      DT_DATETIME,   DT_INT,         DT_INT,         DT_INT,
                DT_INT,         DT_FLOAT,       DT_FLOAT,       DT_FLOAT,       DT_FLOAT,
                DT_FLOAT,       DT_FLOAT,       DT_FLOAT,       DT_FLOAT_ARRAY, DT_FLOAT_ARRAY,
                DT_FLOAT_ARRAY, DT_FLOAT_ARRAY, DT_FLOAT_ARRAY, DT_FLOAT_ARRAY, DT_BOOL,
                //DT_FLOAT,       DT_FLOAT,       DT_FLOAT,       DT_FLOAT, DT_FLOAT,
                //DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_BOOL,
                DT_FLOAT,       DT_CHAR,        DT_FLOAT,       DT_FLOAT,       DT_FLOAT,
                DT_FLOAT,       DT_FLOAT,        DT_FLOAT,       DT_FLOAT,       DT_FLOAT,
                DT_FLOAT,       DT_DATE};
            int colNum = 32, rowNum = count, indexCapacity = count;
            ConstantSP table = Util::createTable(colNames, colTypes, rowNum, indexCapacity);
            vector<VectorSP> columnVecs;

请先 登录 后评论

最佳答案 2023-01-31 11:38

数组向量(array vector)是 DolphinDB 一种特殊的数据形式。与常规的向量不同,它的每个元素是一个数组,具有相同的数据类型,但长度可以不同。目前支持的数据类型为 Logical, Integral(不包括 COMPRESS 类型), Floating, Temporal。

//创建可容纳2个元素的arrayVector,初始大小为1,可容纳2个。
VectorSP arrayVector = Util::createVector(DT_INT_ARRAY, 1, 2);
//创建第一个元素
VectorSP value = Util::createVector(DT_INT, 3);
value->setInt(0, 1);
value->setInt(1, 2);
value->setInt(2, 3);
//设置第一个元素
arrayVector->set(0, value);
//创建第二个元素
value = Util::createVector(DT_INT, 3);
value->setInt(0, 4);
value->setInt(1, 5);
value->setInt(2, 6);
//添加第二个元素
arrayVector->append(value);
std::cout << arrayVector->getString() << std::endl;

结果是[[1,2,3],[4,5,6]]。

使用 get 方法获取第二个元素:

VectorSP v = result->get(1); 
cout<<v->getString()<<endl; 

结果是一个Int类型的向量[4,5,6]。

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 0 收藏,888 浏览
  • cnshuai 提出于 2023-01-29 17:40

相似问题