9
9
List ,
10
10
Optional ,
11
11
Any ,
12
- Dict ,
13
12
Callable ,
14
- TypeVar ,
15
- Generic ,
16
13
cast ,
17
- TYPE_CHECKING ,
18
14
)
19
15
20
- from databricks .sql .backend .types import ExecuteResponse , CommandId
21
- from databricks .sql .backend .sea .models .base import ResultData
22
16
from databricks .sql .backend .sea .backend import SeaDatabricksClient
17
+ from databricks .sql .backend .types import ExecuteResponse
23
18
24
- if TYPE_CHECKING :
25
- from databricks .sql .result_set import ResultSet , SeaResultSet
19
+ from databricks .sql .result_set import ResultSet , SeaResultSet
26
20
27
21
logger = logging .getLogger (__name__ )
28
22
29
23
30
24
class ResultSetFilter :
31
25
"""
32
- A general-purpose filter for result sets that can be applied to any backend.
33
-
34
- This class provides methods to filter result sets based on various criteria,
35
- similar to the client-side filtering in the JDBC connector.
26
+ A general-purpose filter for result sets.
36
27
"""
37
28
38
29
@staticmethod
39
30
def _filter_sea_result_set (
40
- result_set : " SeaResultSet" , filter_func : Callable [[List [Any ]], bool ]
41
- ) -> " SeaResultSet" :
31
+ result_set : SeaResultSet , filter_func : Callable [[List [Any ]], bool ]
32
+ ) -> SeaResultSet :
42
33
"""
43
34
Filter a SEA result set using the provided filter function.
44
35
@@ -49,15 +40,13 @@ def _filter_sea_result_set(
49
40
Returns:
50
41
A filtered SEA result set
51
42
"""
43
+
52
44
# Get all remaining rows
53
45
all_rows = result_set .results .remaining_rows ()
54
46
55
47
# Filter rows
56
48
filtered_rows = [row for row in all_rows if filter_func (row )]
57
49
58
- # Import SeaResultSet here to avoid circular imports
59
- from databricks .sql .result_set import SeaResultSet
60
-
61
50
# Reuse the command_id from the original result set
62
51
command_id = result_set .command_id
63
52
@@ -73,10 +62,13 @@ def _filter_sea_result_set(
73
62
)
74
63
75
64
# Create a new ResultData object with filtered data
65
+
76
66
from databricks .sql .backend .sea .models .base import ResultData
77
67
78
68
result_data = ResultData (data = filtered_rows , external_links = None )
79
69
70
+ from databricks .sql .result_set import SeaResultSet
71
+
80
72
# Create a new SeaResultSet with the filtered data
81
73
filtered_result_set = SeaResultSet (
82
74
connection = result_set .connection ,
@@ -91,11 +83,11 @@ def _filter_sea_result_set(
91
83
92
84
@staticmethod
93
85
def filter_by_column_values (
94
- result_set : " ResultSet" ,
86
+ result_set : ResultSet ,
95
87
column_index : int ,
96
88
allowed_values : List [str ],
97
89
case_sensitive : bool = False ,
98
- ) -> " ResultSet" :
90
+ ) -> ResultSet :
99
91
"""
100
92
Filter a result set by values in a specific column.
101
93
@@ -108,6 +100,7 @@ def filter_by_column_values(
108
100
Returns:
109
101
A filtered result set
110
102
"""
103
+
111
104
# Convert to uppercase for case-insensitive comparison if needed
112
105
if not case_sensitive :
113
106
allowed_values = [v .upper () for v in allowed_values ]
@@ -138,8 +131,8 @@ def filter_by_column_values(
138
131
139
132
@staticmethod
140
133
def filter_tables_by_type (
141
- result_set : " ResultSet" , table_types : Optional [List [str ]] = None
142
- ) -> " ResultSet" :
134
+ result_set : ResultSet , table_types : Optional [List [str ]] = None
135
+ ) -> ResultSet :
143
136
"""
144
137
Filter a result set of tables by the specified table types.
145
138
@@ -154,6 +147,7 @@ def filter_tables_by_type(
154
147
Returns:
155
148
A filtered result set containing only tables of the specified types
156
149
"""
150
+
157
151
# Default table types if none specified
158
152
DEFAULT_TABLE_TYPES = ["TABLE" , "VIEW" , "SYSTEM TABLE" ]
159
153
valid_types = (
0 commit comments