Skip to content

Commit f4ac121

Browse files
authored
Adding support for incremental extract refresh (#352)
* Adding support for incremental extract refresh * one liner change
1 parent 8c78b10 commit f4ac121

3 files changed

Lines changed: 33 additions & 6 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ dependencies = [
5353
"types-mock",
5454
"types-requests",
5555
"types-setuptools",
56-
"tableauserverclient==0.35",
56+
"tableauserverclient==0.37",
5757
"urllib3",
5858
]
5959
[project.optional-dependencies]

tabcmd/commands/extracts/refresh_extracts_command.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,15 @@ def run_command(args):
3434
if args.addcalculations or args.removecalculations:
3535
logger.warning("Add/Remove Calculations tasks are not supported.")
3636

37-
# docs: the REST method always runs a full refresh even if the refresh type is set to incremental.
38-
if args.incremental: # docs: run the incremental refresh
39-
logger.warn("Incremental refresh is not yet available through the new tabcmd")
37+
incremental_refresh = True if args.incremental else False
4038

4139
try:
4240
item = Extracts.get_wb_or_ds_for_extracts(args, logger, server)
4341
if args.datasource:
4442
logger.info(_("refreshextracts.status_refreshed").format(_("content_type.datasource"), args.datasource))
45-
job: TSC.JobItem = server.datasources.refresh(item.id)
43+
job: TSC.JobItem = server.datasources.refresh(item.id, incremental_refresh)
4644
else:
47-
job: TSC.JobItem = server.workbooks.refresh(item.id)
45+
job: TSC.JobItem = server.workbooks.refresh(item.id, incremental_refresh)
4846
logger.info(_("refreshextracts.status_refreshed").format(_("content_type.workbook"), args.workbook))
4947

5048
except Exception as e:

tests/commands/test_run_commands.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,35 @@ def test_refresh_extract(self, mock_session, mock_server):
223223

224224
refresh_extracts_command.RefreshExtracts.run_command(mock_args)
225225
mock_session.assert_called()
226+
mock_server.datasources.refresh.assert_called_with(fake_item.id, False)
227+
228+
def test_run_command_incremental_refresh_datasource(self, mock_session, mock_server):
229+
RunCommandsTest._set_up_session(mock_session, mock_server)
230+
mock_args.incremental = True
231+
mock_args.datasource = fake_item.name
232+
mock_server.datasources = getter
233+
mock_server.projects = getter
234+
mock_args.workbook = None
235+
mock_args.addcalculations = False
236+
mock_args.removecalculations = False
237+
mock_args.synchronous = False
238+
239+
refresh_extracts_command.RefreshExtracts.run_command(mock_args)
240+
mock_server.datasources.refresh.assert_called_with(fake_item.id, True)
241+
242+
def test_run_command_incremental_refresh_workbook(self, mock_session, mock_server):
243+
RunCommandsTest._set_up_session(mock_session, mock_server)
244+
mock_args.incremental = True
245+
mock_args.workbook = fake_item.name
246+
mock_server.workbooks = getter
247+
mock_server.projects = getter
248+
mock_args.datasource = None
249+
mock_args.addcalculations = False
250+
mock_args.removecalculations = False
251+
mock_args.synchronous = False
252+
253+
refresh_extracts_command.RefreshExtracts.run_command(mock_args)
254+
mock_server.workbooks.refresh.assert_called_with(fake_item.id, True)
226255

227256
# groups
228257
def test_create_group(self, mock_session, mock_server):

0 commit comments

Comments
 (0)