Metadata-Version: 2.1
Name: TableauScraper
Version: 0.1.1
Summary: Library to get data from Tableau Viz
Home-page: https://github.com/bertrandmartel/tableau-scraping
Author: Bertrand Martel
Author-email: bmartel.fr@gmail.com
License: UNKNOWN
Description: # Tableau Scraper
        
        [![PyPI](https://img.shields.io/pypi/v/TableauScraper.svg)](https://pypi.python.org/pypi/TableauScraper)
        [![CI](https://github.com/bertrandmartel/tableau-scraping/workflows/CI/badge.svg)](https://github.com/bertrandmartel/tableau-scraping/actions)
        [![codecov](https://codecov.io/gh/bertrandmartel/tableau-scraping/branch/master/graph/badge.svg?token=F4R3NZF796)](https://codecov.io/gh/bertrandmartel/tableau-scraping)
        [![License](http://img.shields.io/:license-mit-blue.svg)](LICENSE.md)
        
        Python library to scrape data from [Tableau viz](https://public.tableau.com/fr-fr/gallery)
        
        R library is under development but a script is available to get the worksheets, see [this](https://github.com/bertrandmartel/tableau-scraping#r)
        
        ## Python
        
        ### Install
        
        ```bash
        pip install TableauScraper
        ```
        
        ### Usage
        
        - Get worksheets data
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = "https://public.tableau.com/views/PlayerStats-Top5Leagues20192020/OnePlayerSummary"
        
        ts = TS()
        ts.loads(url)
        workbook = ts.getWorkbook()
        
        for t in workbook.worksheets:
            print(f"worksheet name : {t.name}") #show worksheet name
            print(t.data) #show dataframe for this worksheet
        ```
        
        [Try this on repl.it](https://repl.it/@bertrandmartel/TableauGetWorksheets)
        
        - Get a specific worksheet
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = "https://public.tableau.com/views/PlayerStats-Top5Leagues20192020/OnePlayerSummary"
        
        ts = TS()
        ts.loads(url)
        
        ws = ts.getWorksheet("ATT MID CREATIVE COMP")
        print(ws.data)
        ```
        
        - select a selectable item
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = "https://public.tableau.com/views/PlayerStats-Top5Leagues20192020/OnePlayerSummary"
        
        ts = TS()
        ts.loads(url)
        
        ws = ts.getWorksheet("ATT MID CREATIVE COMP")
        
        # show selectable values
        selections = ws.getSelectableItems()
        print(selections)
        
        # select that value
        dashboard = ws.select("ATTR(Player)", "Vinicius Júnior")
        
        # display worksheets
        for t in dashboard.worksheets:
            print(t.data)
        ```
        
        [Try this on repl.it](https://repl.it/@bertrandmartel/TableauSelectItem)
        
        - set parameter
        
        Get list of parameters with `workbook.getParameters()` and set parameter value using `workbook.setParameter("column_name", "value")` :
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = "https://public.tableau.com/views/PlayerStats-Top5Leagues20192020/OnePlayerSummary"
        
        ts = TS()
        ts.loads(url)
        workbook = ts.getWorkbook()
        
        # show parameters values / column
        parameters = workbook.getParameters()
        print(parameters)
        
        # set parameters column / value
        workbook = workbook.setParameter("P.League 2", "Ligue 1")
        
        # display worksheets
        for t in workbook.worksheets:
            print(t.data)
        ```
        
        [Try this on repl.it](https://repl.it/@bertrandmartel/TableauParameter)
        
        - set filter
        
        Get list of filters with `worksheet.getFilters` and set filter value using `worksheet.setFilter("column_name", "value")`:
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = 'https://public.tableau.com/views/WomenInOlympics/Dashboard1'
        ts = TS()
        ts.loads(url)
        
        # show original data for worksheet
        ws = ts.getWorksheet("Bar Chart")
        print(ws.data)
        
        # get filters columns and values
        filters = ws.getFilters()
        print(filters)
        
        # set filter value
        wb = ws.setFilter('[Olympics]', 'Winter')
        
        # show the new data for worksheet
        countyWs = wb.getWorksheet("Bar Chart")
        print(countyWs.data)
        ```
        
        [Try this on repl.it](https://repl.it/@bertrandmartel/TableauFilter)
        
        - Go to sheet
        
        Get list of all sheets with subsheets visible or invisible, ability to send a go-to-sheet command (dashboar button) :
        
        ```python
        from tableauscraper import TableauScraper as TS
        
        url = "https://public.tableau.com/views/COVID-19VaccineTrackerDashboard_16153822244270/Dosesadministered"
        ts = TS()
        ts.loads(url)
        workbook = ts.getWorkbook()
        
        sheets = workbook.getSheets()
        print(sheets)
        
        nycAdults = workbook.goToSheet("NYC Adults")
        for t in nycAdults.worksheets:
            print(f"worksheet name : {t.name}")  # show worksheet name
            print(t.data)  # show dataframe for this worksheet
        ```
        
        ### Sample usecases
        
        - https://replit.com/@bertrandmartel/TableauOregonCovid
        - https://replit.com/@bertrandmartel/TableauCovidIndia
        - https://replit.com/@bertrandmartel/TableauCovidArizona
        - https://replit.com/@bertrandmartel/TableauIllinoisOpioId
        - https://replit.com/@bertrandmartel/TableauCovidNY
        - https://replit.com/@bertrandmartel/TableauCovidNCDHHS
        - https://replit.com/@bertrandmartel/TableauCovidWisconsin
        - https://replit.com/@bertrandmartel/TableauScrapeNewspaper
        - https://replit.com/@bertrandmartel/TableauStoryPoints
        - https://replit.com/@bertrandmartel/TableauCovidOhio
        - https://replit.com/@bertrandmartel/TableauCovidSouthCarolina
        
        ### Testing Python script
        
        To discover all worksheets, selectable columns and dropdowns, run `prompt.py` script under `scripts` directory :
        
        ```bash
        git clone git@github.com:bertrandmartel/tableau-scraping.git
        cd tableau-scraping/scripts
        
        #get worksheets data
        python3 prompt.py -get workbook -url "https://public.tableau.com/views/COVID-19inMissouri/COVID-19inMissouri"
        
        #select a selectable item
        python3 prompt.py -get select -url "https://public.tableau.com/views/MKTScoredeisolamentosocial/VisoGeral"
        
        #set a parameter
        python3 prompt.py -get parameter -url "https://public.tableau.com/views/COVID-19DailyDashboard_15960160643010/Casesbyneighbourhood"
        ```
        
        ### Settings
        
        `TableauScraper` class has the following optional parameters :
        
        | Parameters | default value | description                                                       |
        | ---------- | ------------- | ----------------------------------------------------------------- |
        | logLevel   | logging.INFO  | log level                                                         |
        | delayMs    | 500           | minimum delay in millis between actions (select/dropdown request) |
        
        ## R
        
        under `R` directory :
        
        ```R
        Rscript tableau.R
        ```
        
        R library is under development
        
        ## Stackoverflow Questions
        
        See [those stackoverflow posts about this topic](https://stackoverflow.com/search?q=user%3A2614364+%5Btableau-api%5D)
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Requires-Python: >=3.6
Description-Content-Type: text/markdown
