Skip to content

Commit 54dd646

Browse files
authored
[PECOBLR-681] added new session conf to enable metric view metadata (#688)
1 parent 07c541b commit 54dd646

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/databricks/sql/client.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,12 @@ def read(self) -> Optional[OAuthToken]:
200200
STRUCT is returned as Dict[str, Any]
201201
ARRAY is returned as numpy.ndarray
202202
When False, complex types are returned as a strings. These are generally deserializable as JSON.
203+
:param enable_metric_view_metadata: `bool`, optional (default is False)
204+
When True, enables metric view metadata support by setting the
205+
spark.sql.thriftserver.metadata.metricview.enabled session configuration.
206+
This allows
207+
1. cursor.tables() to return METRIC_VIEW table type
208+
2. cursor.columns() to return "measure" column type
203209
"""
204210

205211
# Internal arguments in **kwargs:
@@ -248,6 +254,14 @@ def read(self) -> Optional[OAuthToken]:
248254
access_token_kv = {"access_token": access_token}
249255
kwargs = {**kwargs, **access_token_kv}
250256

257+
enable_metric_view_metadata = kwargs.get("enable_metric_view_metadata", False)
258+
if enable_metric_view_metadata:
259+
if session_configuration is None:
260+
session_configuration = {}
261+
session_configuration[
262+
"spark.sql.thriftserver.metadata.metricview.enabled"
263+
] = "true"
264+
251265
self.disable_pandas = kwargs.get("_disable_pandas", False)
252266
self.lz4_compression = kwargs.get("enable_query_result_lz4_compression", True)
253267
self.use_cloud_fetch = kwargs.get("use_cloud_fetch", True)

tests/unit/test_session.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,17 @@ def test_configuration_passthrough(self, mock_client_class):
163163
call_kwargs = mock_client_class.return_value.open_session.call_args[1]
164164
assert call_kwargs["session_configuration"] == mock_session_config
165165

166+
@patch("%s.session.ThriftDatabricksClient" % PACKAGE_NAME)
167+
def test_enable_metric_view_metadata_parameter(self, mock_client_class):
168+
"""Test that enable_metric_view_metadata parameter sets the correct session configuration."""
169+
databricks.sql.connect(
170+
enable_metric_view_metadata=True, **self.DUMMY_CONNECTION_ARGS
171+
)
172+
173+
call_kwargs = mock_client_class.return_value.open_session.call_args[1]
174+
expected_config = {"spark.sql.thriftserver.metadata.metricview.enabled": "true"}
175+
assert call_kwargs["session_configuration"] == expected_config
176+
166177
@patch("%s.session.ThriftDatabricksClient" % PACKAGE_NAME)
167178
def test_initial_namespace_passthrough(self, mock_client_class):
168179
mock_cat = Mock()

0 commit comments

Comments
 (0)