OpenMS
Loading...
Searching...
No Matches
ParquetFilter Class Reference

Typed filter builder for parquet-backed datasets. More...

#include <OpenMS/FORMAT/ParquetFilter.h>

Collaboration diagram for ParquetFilter:
[legend]

Public Member Functions

 ParquetFilter ()=default
 
 ParquetFilter (const ParquetFilter &)=default
 
ParquetFilter & andNext ()
 Combine the next condition with logical AND.
 
ParquetFilter & orNext ()
 Combine the next condition with logical OR.
 
ParquetFilter & eq (const std::string &column, Int64 value)
 Add an equality condition for an integer column.
 
ParquetFilter & ne (const std::string &column, Int64 value)
 Add an inequality condition for an integer column.
 
ParquetFilter & lt (const std::string &column, Int64 value)
 Add a less-than condition for an integer column.
 
ParquetFilter & le (const std::string &column, Int64 value)
 Add a less-than-or-equal condition for an integer column.
 
ParquetFilter & gt (const std::string &column, Int64 value)
 Add a greater-than condition for an integer column.
 
ParquetFilter & ge (const std::string &column, Int64 value)
 Add a greater-than-or-equal condition for an integer column.
 
ParquetFilter & in (const std::string &column, const std::vector< Int64 > &values)
 Add an IN condition for an integer column.
 
ParquetFilter & eq (const std::string &column, const std::string &value)
 Add an equality condition for a string column.
 
ParquetFilter & ne (const std::string &column, const std::string &value)
 Add an inequality condition for a string column.
 
ParquetFilter & lt (const std::string &column, const std::string &value)
 Add a less-than condition for a string column.
 
ParquetFilter & le (const std::string &column, const std::string &value)
 Add a less-than-or-equal condition for a string column.
 
ParquetFilter & gt (const std::string &column, const std::string &value)
 Add a greater-than condition for a string column.
 
ParquetFilter & ge (const std::string &column, const std::string &value)
 Add a greater-than-or-equal condition for a string column.
 
ParquetFilter & in (const std::string &column, const std::vector< std::string > &values)
 Add an IN condition for a string column.
 
const FilterExpression & expression () const
 Return the filter expression.
 
bool empty () const
 Check if the filter is empty (has no conditions).
 

Static Public Member Functions

static FilterExpression merge (const FilterExpression &lhs, const FilterExpression &rhs, const std::string &connector="AND")
 Merge two filter expressions with a connector.
 

Private Member Functions

ParquetFilter & addCondition_ (const std::string &column, const std::string &op, ColumnType type, const std::vector< std::string > &values)
 

Private Attributes

FilterExpression expr_
 
std::string next_connector_ {"AND"}
 

Detailed Description

Typed filter builder for parquet-backed datasets.

This builder provides a structured alternative to string-encoded filters. It is intended for use in Parquet-backed readers (e.g., XICParquetFile) to construct filter expressions that can be pushed down to Arrow Dataset scanners or evaluated in-memory if pushdown is unavailable.

Conditions are combined left-to-right. Use andNext()/orNext() to control how consecutive conditions are connected (default is AND).

Example

using namespace OpenMS;
f.eq("PRECURSOR_ID", 1318)
.eq("ANNOTATION", "y3^1");
// Use f.expression() to pass into a parquet reader, or pass the builder
// directly when supported.
Typed filter builder for parquet-backed datasets.
Definition ParquetFilter.h:74
ParquetFilter & eq(const std::string &column, Int64 value)
Add an equality condition for an integer column.
ParquetFilter & andNext()
Combine the next condition with logical AND.
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19

Constructor & Destructor Documentation

◆ ParquetFilter() [1/2]

ParquetFilter ( )
default

◆ ParquetFilter() [2/2]

ParquetFilter ( const ParquetFilter &  )
default

Member Function Documentation

◆ addCondition_()

ParquetFilter & addCondition_ ( const std::string &  column,
const std::string &  op,
ColumnType  type,
const std::vector< std::string > &  values 
)
private

◆ andNext()

ParquetFilter & andNext ( )

Combine the next condition with logical AND.

◆ empty()

bool empty ( ) const

Check if the filter is empty (has no conditions).

Returns
True if the filter has no conditions.

◆ eq() [1/2]

ParquetFilter & eq ( const std::string &  column,
const std::string &  value 
)

Add an equality condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ eq() [2/2]

ParquetFilter & eq ( const std::string &  column,
Int64  value 
)

Add an equality condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ expression()

const FilterExpression & expression ( ) const

Return the filter expression.

Returns
The constructed filter expression.

◆ ge() [1/2]

ParquetFilter & ge ( const std::string &  column,
const std::string &  value 
)

Add a greater-than-or-equal condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ ge() [2/2]

ParquetFilter & ge ( const std::string &  column,
Int64  value 
)

Add a greater-than-or-equal condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ gt() [1/2]

ParquetFilter & gt ( const std::string &  column,
const std::string &  value 
)

Add a greater-than condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ gt() [2/2]

ParquetFilter & gt ( const std::string &  column,
Int64  value 
)

Add a greater-than condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ in() [1/2]

ParquetFilter & in ( const std::string &  column,
const std::vector< Int64 > &  values 
)

Add an IN condition for an integer column.

Parameters
columnColumn name.
valuesInteger values to compare.

◆ in() [2/2]

ParquetFilter & in ( const std::string &  column,
const std::vector< std::string > &  values 
)

Add an IN condition for a string column.

Parameters
columnColumn name.
valuesstd::string values to compare.

◆ le() [1/2]

ParquetFilter & le ( const std::string &  column,
const std::string &  value 
)

Add a less-than-or-equal condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ le() [2/2]

ParquetFilter & le ( const std::string &  column,
Int64  value 
)

Add a less-than-or-equal condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ lt() [1/2]

ParquetFilter & lt ( const std::string &  column,
const std::string &  value 
)

Add a less-than condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ lt() [2/2]

ParquetFilter & lt ( const std::string &  column,
Int64  value 
)

Add a less-than condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ merge()

static FilterExpression merge ( const FilterExpression &  lhs,
const FilterExpression &  rhs,
const std::string &  connector = "AND" 
)
static

Merge two filter expressions with a connector.

Parameters
[in]lhsLeft-hand side filter expression.
[in]rhsRight-hand side filter expression.
[in]connectorLogical connector ("AND" or "OR").
Returns
Combined filter expression.

◆ ne() [1/2]

ParquetFilter & ne ( const std::string &  column,
const std::string &  value 
)

Add an inequality condition for a string column.

Parameters
columnColumn name.
valuestd::string value to compare.

◆ ne() [2/2]

ParquetFilter & ne ( const std::string &  column,
Int64  value 
)

Add an inequality condition for an integer column.

Parameters
columnColumn name.
valueInteger value to compare.

◆ orNext()

ParquetFilter & orNext ( )

Combine the next condition with logical OR.

Member Data Documentation

◆ expr_

FilterExpression expr_
private

◆ next_connector_

std::string next_connector_ {"AND"}
private