Как читать данные из столбцов, не имеющих одинаковое количество строк в БД HP vertica?

Я создаю функцию преобразования C ++ с базой данных HP Vertica и хочу прочитать данные из 2 столбцов из 2 разных таблиц и сохранить их в 2 векторах.
Затем будет выведено количество вхождений каждого элемента одного вектора во второй.
Проблема в том, что эти столбцы не имеют одинаковое количество строк. Когда я зарегистрировал код, который использовал, я обнаружил, что он считывает ввод намного быстрее, чем размер таблицы.
Вот код, который я использую.

  virtual void processPartition(ServerInterface &srvInterface,
PartitionReader &inputReader,
PartitionWriter &outputWriter)
{

try {
std::vector<string> vectcomb;
std::vector<string> vectrule;
if (inputReader.getNumCols() != 2)
vt_report_error(0, "Function only accepts 2 argument, but %zu provided", inputReader.getNumCols());

try{
int a=0 ;
do {srvInterface.log("[occurence] data load %d ",a);
a++;

if(inputReader.isNull(1)){vectcomb.emplace_back(inputReader.getStringRef(0).str());}
else {vectcomb.emplace_back(inputReader.getStringRef(0).str());
vectrule.emplace_back(inputReader.getStringRef(1).str());}

} while (inputReader.next());
}catch(exception& e){ srvInterface.log("[occurence] exception catched");}

for(int i=0;i<vectcomb.size();i++) {
int occ=0;
srvInterface.log("[occurence] test %d ",i);
for(int j=0;j<vectrule.size();j++) {
if(vectrule.at(j).find(vectcomb.at(i)) != std::string::npos) {occ++ ;}
}
outputWriter.setInt(0,occ) ; outputWriter.next() ;
}

} catch(exception& e) {
// Standard exception. Quit.
vt_report_error(0, "Exception while processing partition: [%s]", e.what());
}
}
};

-2

Решение

Что-то не делает меня сценой, UDX в основном работает с верхним набором результатов запроса, поэтому я предположил, что UDX получает два столбца из набора результатов в качестве входных данных, сказав, что проблема, на которую вы ссылаетесь, недопустима и может ‘ это не существует. Будет очень полезно, если вы сможете предоставить больше информации о том, как вы планируете выполнять этот UDX.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]