Skip to content

Commit 4bd223f

Browse files
dorellangcopybara-github
authored andcommitted
Implement TextSearchQuery with new args and InjectTokenIntoTable for Snowflake.
PiperOrigin-RevId: 828014889
1 parent f241dc2 commit 4bd223f

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

perfkitbenchmarker/providers/snowflake/snowflake.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,9 @@ class Snowflake(edw_service.EdwService):
352352
INDIVIDUAL_QUERY_STATS_TEMPLATE = (
353353
'edw/snowflake_aws/metadata/individual_query_stats.sql.j2'
354354
)
355+
INJECT_TOKEN_INTO_TABLE = (
356+
f'{SEARCH_QUERY_TEMPLATE_LOCATION}/inject_token_into_table.sql.j2'
357+
)
355358

356359
CLOUD: str = None
357360
SERVICE_TYPE = None
@@ -655,11 +658,13 @@ def TextSearchQuery(
655658
limit: int | None = None,
656659
date_between: tuple[datetime.date, datetime.date] | None = None,
657660
) -> tuple[float, dict[str, Any]]:
658-
# TODO(user): Add support for order_by, limit and date_between args.
659661
query_name = 'text_search_query'
660662
context = {
661663
'table_name': table_path,
662664
'search_text': search_keyword,
665+
'order_by': order_by,
666+
'limit': limit,
667+
'date_between': date_between,
663668
}
664669
self.client_interface.client_vm.RenderTemplate(
665670
data.ResourcePath(self.INDEX_SEARCH_QUERY_TEMPLATE),
@@ -670,11 +675,28 @@ def TextSearchQuery(
670675
res, meta = self.client_interface.ExecuteQuery(
671676
query_name, print_results=True
672677
)
673-
meta['edw_search_result_rows'] = int(
674-
meta['query_results']['RESULT_ROWS'][0]
678+
meta['edw_search_result_rows'] = len(
679+
meta['query_results'].get('EVENT_TIMESTAMP', [])
675680
)
676681
return res, meta
677682

683+
def InjectTokenIntoTable(
684+
self, table_path: str, token: str, token_count: int
685+
) -> tuple[float, dict[str, Any]]:
686+
query_name = 'inject_token_into_table'
687+
context = {
688+
'table_name': table_path,
689+
'token': token,
690+
'token_count': token_count,
691+
}
692+
self.client_interface.client_vm.RenderTemplate(
693+
data.ResourcePath(self.INJECT_TOKEN_INTO_TABLE),
694+
query_name,
695+
context,
696+
should_log_file=True,
697+
)
698+
return self.client_interface.ExecuteQuery(query_name, print_results=True)
699+
678700
def SetWarehouse(self, warehouse: str):
679701
"""Switches Snowflake Warehouse."""
680702
assert isinstance(

0 commit comments

Comments
 (0)