定义流数据表时,能不能定义数组类型,去保存数组数据
例子大概如下,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;
数组向量(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]。