Я просто пытаюсь изучить Apache Beam и возвращаю данные из базы данных оракула.Мне удалось настроить базовое подключение и вернуть некоторые данные, но мне нужно вызвать сохраненный процесс перед выполнением запроса sql, чтобы вернуть мои данные (сохраненный процесс устанавливает контекст запроса, чтобы ограничить данные, возвращаемые определенным разделом)
Я попытался добавить второй оператор .withQuery, но это не работает.Код не возвращает ошибку, но возвращает данные из всех разделов
Pipeline p = Pipeline.create(options);
PCollection<List<String>> rows p.apply(JdbcIO.<List<Strng>>read()
.withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(
"oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@server")
.withUsername("uname")
.withPassword("pword")
)
.withQuery("call procname(partitionid)")
.withQuery("Select * from table")
.withCoder(ListCoder.of(StringUtf8Coder.of()))
.withRowMapper(new JdbcIO.RowMapper<List<String>>(){
public List<String> mapRow(ResultSet resultSet) throws Exception {
List<String> addRow = new ArrayList<String>();
for(int i=1; i<= resultSet.getMetaData().getColumnCount();i++)
{
addRow.add(i-1, String.valueOf(resultSet.getObject(i)));
}
return addRow;
}
}