0

假设我正在对 Parquet 文件的每一行做一些事情,并且每一行都有一个名为的字段,该字段myList是重复的和字符串。如何获得myList每行的最后一个值?

此示例使用 avector来存储所有值。有什么方便的方法可以直接获取每行重复字段的最后一个值吗?

我的代码是这样的:

auto chunk_array = table->GetColumnByName(myList);
auto list = std::static_pointer_cast<arrow::ListArray>(chunk_array->chunk(0));
for (int cur_row = 0; cur_row < table->num_rows(); ++cur_row) {
    //to get the last value of myList in current row
}

谢谢~

4

1 回答 1

0

我最终通过下面的代码解决了它:

auto chunk_array = table->GetColumnByName(myList);
auto list = std::static_pointer_cast<arrow::ListArray>(chunk_array->chunk(0));
int l_offset1, l_offset2, l_gap;
for (int cur_row = 0; cur_row < table->num_rows(); ++cur_row) {
    l_offset1 = list->value_offset(cur_row);
    l_offset2 = list->value_offset(cur_row + 1);
    l_gap = l_offset2 > l_offset1 ? l_offset2 - l_offset1 : 1;
    real_offset = real_offset + l_gap - 1;
    auto varr = std::static_pointer_cast<arrow::Int64Array>(list->values());
    varr->Value(real_offset);
    real_offset += 1;
}
于 2020-04-29T12:39:32.703 回答