Skip to content

Issue with Downloading Large Views from Tableau Server to CSV #1374

Open

Description

@abhishek7575-spec

Describe the bug
I'm encountering an issue when trying to download a view that is around 200 MB in size. My script works perfectly for smaller files (5 MB or 10 MB), but it keeps running indefinitely and doesn't write data into the CSV file for the larger view.

The script successfully logs "CSV populated," indicating that server.views.populate_csv completes, but the file is not written for larger views.

Here's the code I'm using:

def download_file(client, server, content_url, output_file, region):

    # NOTE: Monkey patched TSC.RequestOptions.Field class

    # since the contentUrl filter parameter was not supported

    setattr(TSC.RequestOptions.Field, 'ContentURL', 'contentUrl')

    req_option = TSC.RequestOptions()

    req_option.filter.add(TSC.Filter(TSC.RequestOptions.Field.ContentURL,

                     TSC.RequestOptions.Operator.Equals,

                     content_url))

    logger.info('Fetching views...')

    views, pagination_item = server.views.get(req_option)

    logger.info(f'Views fetched: {len(views)}')

    if len(views) == 1:

      only_matched_index = 0

      view = views[only_matched_index]

      logger.info('Populating CSV...')

      server.views.populate_csv(view, TSC.CSVRequestOptions(maxage = 5))

      logger.info('CSV populated.')

      with open(output_file, 'wb') as f:

        f.write(b''.join(view.csv))

      logger.info(f"CSV DATA WRITTEN TO the {output_file}")

 

OUTPUT:

INFO:main:Fetching views...

INFO:main:Views fetched: 1

INFO:main:Populating CSV...

INFO:main:CSV populated.

Could anyone suggest what might be going wrong with handling larger views? Are there any additional steps or considerations when dealing with larger files in Tableau Server that I might be missing?

Any insights or suggestions would be greatly appreciated!

Thank you!

Versions
Details of your environment, including:

  • Python version:3.9
  • TSC library version:0.30

Activity

  1. jacalata commented on May 22, 2024

    @jacalata
    Contributor

    Hm, not sure I've tried this. Most likely the problem is in the library here, and the request is timing out - there's no logic here to extend the session. I'll try and reproduce it to see exactly what happens.

  2. added
    help wantedA user needs help, may be a mistake, a bug or a feature request
    on May 22, 2024
  3. abhishek7575-spec commented on May 23, 2024

    @abhishek7575-spec
    Author

    @jacalata Thank you for looking into this and for trying to reproduce the issue. Looking forward to hearing back from you.

  4. jorwoods commented on May 30, 2024

    @jorwoods
    Contributor

    @abhishek7575-spec in v0.30, ContentUrl is absolutely available.

    I would also consider changing the line f.write(b''.join(view.csv)). Its a nifty one-liner if the data is small enough and can easily fit into RAM, but you could run into problems with bigger files, as well as not being able to troubleshoot as easily. You could do this for example:

    for i, chunk in enumerate(view.csv):
        logger.debug("Writing chunk %s", i)
        f.write(chunk)

    It would give you log output so you can see that its still working and not have to load the entire file into RAM at once.

  5. SenthamizhCSS commented on Sep 15, 2024

    @SenthamizhCSS

    @abhishek7575-spec : I'm also facing the same issue...Were you able to get this resolved?

  6. added a commit that references this issue on Jul 21, 2026
    695f784
  7. github-actions commented on Jul 28, 2026

    @github-actions

    This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. If this is still relevant, please comment to keep it open.

  8. jacalata commented on Jul 31, 2026

    @jacalata
    Contributor

    Update — an in-flight PR (#1817) increases the streaming chunk size for CSV and Excel view downloads, which should reduce total transfer time for large views and may resolve some timeout cases. It does not add session-extension logic, so genuinely long-running downloads on very large views may still time out. If either of you can test against that branch and report whether your download completes, that would help decide next steps here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bughelp wantedA user needs help, may be a mistake, a bug or a feature requestin-progressIssues that are in-progress of being fixedneeds investigationIssue needs to be looked at by Tableau

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions