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
 
ParquetFilterandNext ()
 Combine the next condition with logical AND.
 
ParquetFilterorNext ()
 Combine the next condition with logical OR.
 
ParquetFiltereq (const std::string &column, Int64 value)
 Add an equality condition for an integer column.
 
ParquetFilterne (const std::string &column, Int64 value)
 Add an inequality condition for an integer column.
 
ParquetFilterlt (const std::string &column, Int64 value)
 Add a less-than condition for an integer column.
 
ParquetFilterle (const std::string &column, Int64 value)
 Add a less-than-or-equal condition for an integer column.
 
ParquetFiltergt (const std::string &column, Int64 value)
 Add a greater-than condition for an integer column.
 
ParquetFilterge (const std::string &column, Int64 value)
 Add a greater-than-or-equal condition for an integer column.
 
ParquetFilterin (const std::string &column, const std::vector< Int64 > &values)
 Add an IN condition for an integer column.
 
ParquetFiltereq (const std::string &column, const std::string &value)
 Add an equality condition for a string column.
 
ParquetFilterne (const std::string &column, const std::string &value)
 Add an inequality condition for a string column.
 
ParquetFilterlt (const std::string &column, const std::string &value)
 Add a less-than condition for a string column.
 
ParquetFilterle (const std::string &column, const std::string &value)
 Add a less-than-or-equal condition for a string column.
 
ParquetFiltergt (const std::string &column, const std::string &value)
 Add a greater-than condition for a string column.
 
ParquetFilterge (const std::string &column, const std::string &value)
 Add a greater-than-or-equal condition for a string column.
 
ParquetFilterin (const std::string &column, const std::vector< std::string > &values)
 Add an IN condition for a string column.
 
const FilterExpressionexpression () 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

ParquetFilteraddCondition_ (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