Skip to content

Commit d61e96a

Browse files
committed
query tags integration
Signed-off-by: Sreekanth Vadigi <[email protected]>
1 parent 701f7f6 commit d61e96a

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

examples/query_tags_example.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import os
2+
import databricks.sql as sql
3+
4+
"""
5+
This example demonstrates how to use Query Tags.
6+
7+
Query Tags are key-value pairs that can be attached to SQL executions and will appear
8+
in the system.query.history table for analytical purposes.
9+
10+
Format: "key1:value1,key2:value2,key3:value3"
11+
"""
12+
13+
print("=== Query Tags Example ===\n")
14+
15+
with sql.connect(
16+
server_hostname=os.getenv("DATABRICKS_SERVER_HOSTNAME"),
17+
http_path=os.getenv("DATABRICKS_HTTP_PATH"),
18+
access_token=os.getenv("DATABRICKS_TOKEN"),
19+
session_configuration={
20+
'QUERY_TAGS': 'team:engineering,test:query-tags',
21+
'ansi_mode': False
22+
}
23+
) as connection:
24+
25+
with connection.cursor() as cursor:
26+
cursor.execute("SELECT 1")
27+
result = cursor.fetchone()
28+
print(f" Result: {result[0]}")
29+
30+
print("\n=== Query Tags Example Complete ===")

tests/e2e/test_driver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ def test_socket_timeout_user_defined(self):
851851
def test_ssp_passthrough(self):
852852
for enable_ansi in (True, False):
853853
with self.cursor(
854-
{"session_configuration": {"ansi_mode": enable_ansi}}
854+
{"session_configuration": {"ansi_mode": enable_ansi, "QUERY_TAGS": "team:marketing,dashboard:abc123,driver:python"}}
855855
) as cursor:
856856
cursor.execute("SET ansi_mode")
857857
assert list(cursor.fetchone()) == ["ansi_mode", str(enable_ansi)]

tests/unit/test_session.py

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

165+
@patch("%s.session.ThriftDatabricksClient" % PACKAGE_NAME)
166+
def test_query_tags_configuration_passthrough(self, mock_client_class):
167+
"""Test that Query Tags are properly passed through to the backend."""
168+
query_tags_config = {"QUERY_TAGS": "team:marketing,dashboard:abc123"}
169+
databricks.sql.connect(
170+
session_configuration=query_tags_config, **self.DUMMY_CONNECTION_ARGS
171+
)
172+
173+
call_kwargs = mock_client_class.return_value.open_session.call_args[1]
174+
assert call_kwargs["session_configuration"] == query_tags_config
175+
assert call_kwargs["session_configuration"]["QUERY_TAGS"] == "team:marketing,dashboard:abc123"
176+
165177
@patch("%s.session.ThriftDatabricksClient" % PACKAGE_NAME)
166178
def test_initial_namespace_passthrough(self, mock_client_class):
167179
mock_cat = Mock()

0 commit comments

Comments
 (0)