tableau / server-client-python

A Python library for the Tableau Server REST API
https://tableau.github.io/server-client-python/
MIT License
660 stars 421 forks source link

[TYPE 3] - Add "max_filesize" parameter to a workbook's `download` method #1500

Open NFeruchBCG opened 1 month ago

NFeruchBCG commented 1 month ago

Description

It would be helpful to be able to pass a max_filesize parameter to a workbook's download method that will return early if a workbook is too large 🙂

jorwoods commented 1 month ago

So you want the user to be able to set a maximum size, and if the workbook size exceeds this user defined value, don't download?

NFeruchBCG commented 1 month ago

Yes exactly - "only download the file if it's less than X units." I had megabytes in mind but open to whatever makes the most sense

This is because the size of workbook files can vary greatly, and I've seen them range from a couple kilobytes to a couple gigabytes. It would put a strain on our server's resources to download too large of files

jorwoods commented 1 month ago

Workbooks and datasources have a size attribute. Why can the user not just write their own if statement to check that prior to attempting the download?

NFeruchBCG commented 1 month ago

There's a problem with tableau's rest api, where the "Get Workbook" endpoint returns a constant 1 for all workbooks. Is this happening just for us?

NFeruchBCG commented 1 month ago

Actually sorry, only for some workbooks - maybe workbooks less than 1 mb are being rounded up to 1?

I haven't had much time to troubleshoot this problem specifically, sorry for the lack of information

jorwoods commented 1 month ago

Can you try checking how many you have of each?

print("1mb workbooks", len(server.workbooks.filter(size="1")))
print(">1mb workbooks", len(server.workbooks.filter(size__gt="1")))