OpenMS
Loading...
Searching...
No Matches
ParquetFilter.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Justin Sing $
6// $Authors: Justin Sing $
7// --------------------------------------------------------------------------
8
9#pragma once
10
11#include <OpenMS/OpenMSConfig.h>
13
14#include <vector>
15
16namespace OpenMS
17{
21 enum class ColumnType
22 {
23 INT,
24 STRING
25 };
26
30 struct OPENMS_DLLAPI Condition
31 {
34 std::vector<String> values;
35 ColumnType type{ColumnType::INT};
36 };
37
41 struct OPENMS_DLLAPI FilterExpression
42 {
43 std::vector<Condition> conditions;
44 std::vector<String> connectors; // "AND" / "OR"
45
46 bool empty() const;
47 };
48
73 class OPENMS_DLLAPI ParquetFilter
74 {
75 public:
76 ParquetFilter() = default;
77 ParquetFilter(const ParquetFilter&) = default;
78
83
88
94 ParquetFilter& eq(const String& column, Int64 value);
95
101 ParquetFilter& ne(const String& column, Int64 value);
102
108 ParquetFilter& lt(const String& column, Int64 value);
109
115 ParquetFilter& le(const String& column, Int64 value);
116
122 ParquetFilter& gt(const String& column, Int64 value);
123
129 ParquetFilter& ge(const String& column, Int64 value);
130
136 ParquetFilter& in(const String& column, const std::vector<Int64>& values);
137
143 ParquetFilter& eq(const String& column, const String& value);
144
150 ParquetFilter& ne(const String& column, const String& value);
151
157 ParquetFilter& lt(const String& column, const String& value);
158
164 ParquetFilter& le(const String& column, const String& value);
165
171 ParquetFilter& gt(const String& column, const String& value);
172
178 ParquetFilter& ge(const String& column, const String& value);
179
185 ParquetFilter& in(const String& column, const std::vector<String>& values);
186
192
197 bool empty() const;
198
207 const FilterExpression& rhs,
208 const String& connector = "AND");
209
210 private:
212 const String& op,
213 ColumnType type,
214 const std::vector<String>& values);
215
217 String next_connector_{"AND"};
218 };
219
239 class OPENMS_DLLAPI ParquetFilterBuilder
240 {
241 public:
244
249
254
260 ParquetFilterBuilder& eq(const String& column, Int64 value);
261
267 ParquetFilterBuilder& ne(const String& column, Int64 value);
268
274 ParquetFilterBuilder& lt(const String& column, Int64 value);
275
281 ParquetFilterBuilder& le(const String& column, Int64 value);
282
288 ParquetFilterBuilder& gt(const String& column, Int64 value);
289
295 ParquetFilterBuilder& ge(const String& column, Int64 value);
296
302 ParquetFilterBuilder& in(const String& column, const std::vector<Int64>& values);
303
309 ParquetFilterBuilder& eq(const String& column, const String& value);
310
316 ParquetFilterBuilder& ne(const String& column, const String& value);
317
323 ParquetFilterBuilder& lt(const String& column, const String& value);
324
330 ParquetFilterBuilder& le(const String& column, const String& value);
331
337 ParquetFilterBuilder& gt(const String& column, const String& value);
338
344 ParquetFilterBuilder& ge(const String& column, const String& value);
345
351 ParquetFilterBuilder& in(const String& column, const std::vector<String>& values);
352
357 const ParquetFilter& filter() const;
358
362 bool empty() const;
363
364 private:
366 };
367} // namespace OpenMS
Fluent builder for ParquetFilter objects.
Definition ParquetFilter.h:240
ParquetFilterBuilder(const ParquetFilterBuilder &)=default
ParquetFilterBuilder & andNext()
Combine the next condition with logical AND.
ParquetFilterBuilder & eq(const String &column, const String &value)
Add an equality condition for a string column.
ParquetFilterBuilder & le(const String &column, const String &value)
Add a less-than-or-equal condition for a string column.
ParquetFilterBuilder & gt(const String &column, const String &value)
Add a greater-than condition for a string column.
ParquetFilterBuilder & eq(const String &column, Int64 value)
Add an equality condition for an integer column.
bool empty() const
Return whether the filter is empty.
ParquetFilterBuilder & ne(const String &column, Int64 value)
Add an inequality condition for an integer column.
ParquetFilterBuilder & ne(const String &column, const String &value)
Add an inequality condition for a string column.
ParquetFilterBuilder & orNext()
Combine the next condition with logical OR.
const ParquetFilter & filter() const
Return the built filter.
ParquetFilterBuilder & ge(const String &column, Int64 value)
Add a greater-than-or-equal condition for an integer column.
ParquetFilterBuilder & lt(const String &column, Int64 value)
Add a less-than condition for an integer column.
ParquetFilter filter_
Definition ParquetFilter.h:365
ParquetFilterBuilder & ge(const String &column, const String &value)
Add a greater-than-or-equal condition for a string column.
ParquetFilterBuilder & le(const String &column, Int64 value)
Add a less-than-or-equal condition for an integer column.
ParquetFilterBuilder & lt(const String &column, const String &value)
Add a less-than condition for a string column.
ParquetFilterBuilder & gt(const String &column, Int64 value)
Add a greater-than condition for an integer column.
ParquetFilterBuilder & in(const String &column, const std::vector< Int64 > &values)
Add an IN condition for an integer column.
ParquetFilterBuilder & in(const String &column, const std::vector< String > &values)
Add an IN condition for a string column.
Typed filter builder for parquet-backed datasets.
Definition ParquetFilter.h:74
const FilterExpression & expression() const
Return the filter expression.
ParquetFilter & ge(const String &column, const String &value)
Add a greater-than-or-equal condition for a string column.
ParquetFilter & eq(const String &column, const String &value)
Add an equality condition for a string column.
ParquetFilter & gt(const String &column, const String &value)
Add a greater-than condition for a string column.
ParquetFilter & lt(const String &column, const String &value)
Add a less-than condition for a string column.
FilterExpression expr_
Definition ParquetFilter.h:216
ParquetFilter & ne(const String &column, const String &value)
Add an inequality condition for a string column.
bool empty() const
Check if the filter is empty (has no conditions).
ParquetFilter & lt(const String &column, Int64 value)
Add a less-than condition for an integer column.
ParquetFilter & in(const String &column, const std::vector< String > &values)
Add an IN condition for a string column.
ParquetFilter & addCondition_(const String &column, const String &op, ColumnType type, const std::vector< String > &values)
ParquetFilter & ge(const String &column, Int64 value)
Add a greater-than-or-equal condition for an integer column.
ParquetFilter & eq(const String &column, Int64 value)
Add an equality condition for an integer column.
ParquetFilter & in(const String &column, const std::vector< Int64 > &values)
Add an IN condition for an integer column.
ParquetFilter(const ParquetFilter &)=default
ParquetFilter & gt(const String &column, Int64 value)
Add a greater-than condition for an integer column.
static FilterExpression merge(const FilterExpression &lhs, const FilterExpression &rhs, const String &connector="AND")
Merge two filter expressions with a connector.
ParquetFilter & ne(const String &column, Int64 value)
Add an inequality condition for an integer column.
ParquetFilter & le(const String &column, const String &value)
Add a less-than-or-equal condition for a string column.
ParquetFilter & orNext()
Combine the next condition with logical OR.
ParquetFilter & andNext()
Combine the next condition with logical AND.
ParquetFilter & le(const String &column, Int64 value)
Add a less-than-or-equal condition for an integer column.
A more convenient string class.
Definition String.h:34
int64_t Int64
Signed integer type (64bit)
Definition Types.h:40
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
ColumnType
Column type for typed parquet filters.
Definition ParquetFilter.h:22
String column
Definition ParquetFilter.h:32
std::vector< String > values
Definition ParquetFilter.h:34
String op
Definition ParquetFilter.h:33
@ INT
intensity
Single filter condition (column, operator, values).
Definition ParquetFilter.h:31
Simple conjunction/disjunction of conditions.
Definition ParquetFilter.h:42
std::vector< Condition > conditions
Definition ParquetFilter.h:43
std::vector< String > connectors
Definition ParquetFilter.h:44