Code Monkey home page Code Monkey logo

Comments (6)

CoderPJM avatar CoderPJM commented on June 7, 2024 1

Okay, so the list returned by getFilters() is not refreshed even though I have set the parameters? Am I missing a step to force a refresh of the plant names between # Set the end date and # Get plant names ?

from tableau-scraping.

bertrandmartel avatar bertrandmartel commented on June 7, 2024

@CoderPJM Hello, it seems ABAÚNA (CEG: CGH.PH.RS.000015-9.01) filter is not available when Escala de Tempo GE Simp 4 filter is set to hora, dia and semana.

It seems that only mes and ano are available for ABAÚNA (CEG: CGH.PH.RS.000015-9.01)

hora, dia and semana:
dia

ano and mes:
ano

from tableau-scraping.

bertrandmartel avatar bertrandmartel commented on June 7, 2024

@CoderPJM This is fixed in the latest release. The following code checks that the target filter is not present after the setParameter:

from tableauscraper import TableauScraper as TS

url = "https://tableau.ons.org.br/t/ONS_Publico/views/GeraodeEnergia/HistricoGeraodeEnergia"
ts = TS()

ts.loads(url)
wb = ts.getWorkbook()
ws = wb.getWorksheet("Simples Geração de Energia Barra Semana")

# Get plant names
usina = [
    t["values"]
    for t in ws.getFilters()
    if t["column"] == "USINACEG"
][0]
print(" ABAÚNA (CEG: CGH.PH.RS.000015-9.01)" in usina)

# Set resolution
print(f"Set resolution to Hora")
wb.setParameter("Escala de Tempo GE Simp 4", "Hora")

# Get plant names with filter refreshed
usina = [
    t["values"]
    for t in ws.getFilters()
    if t["column"] == "USINACEG"
][0]
print(" ABAÚNA (CEG: CGH.PH.RS.000015-9.01)" in usina)

print(f"Set resolution to Ano")
wb.setParameter("Escala de Tempo GE Simp 4", "Ano")

# Get plant names with filter refreshed
usina = [
    t["values"]
    for t in ws.getFilters()
    if t["column"] == "USINACEG"
][0]
print(" ABAÚNA (CEG: CGH.PH.RS.000015-9.01)" in usina)

Output

True
Set resolution to Hora
False
Set resolution to Ano
True

from tableau-scraping.

CoderPJM avatar CoderPJM commented on June 7, 2024

Thank you Bertrand, however the setFilter() is still not returning the expected data. The revised code below (using version 0.1.24) still returns data for a different plant, even after setting a plant that is in the getFilter() list:

from` tableauscraper import TableauScraper as TS

url = "https://tableau.ons.org.br/t/ONS_Publico/views/GeraodeEnergia/HistricoGeraodeEnergia"
ts = TS()

ts.loads(url)
wb = ts.getWorkbook()
ws = wb.getWorksheet("Simples Geração de Energia Barra Semana")

# Set resolution
print(f"Set resolution to Hora")
wb.setParameter("Escala de Tempo GE Simp 4", "Hora")

# Set the start date
print(f"Set start date to 01/01/2016")
wb.setParameter("Início Primeiro Período GE Simp 4",f"01/01/2016")

# Set the end date
print(f"Set end date to 01/01/2017")
wb = wb.setParameter("Fim Primeiro Período GE Simp 4",f"01/01/2017")

# Get plant names
usina = [
    t["values"]
    for t in ws.getFilters()
    if t["column"] == "USINACEG"
][0]

# Set plant name to second plant in list (currently ' AIMORÉS (CEG: UHE.PH.MG.000042-6.01)')
plantName=usina[1]
print(f"Set plant to {plantName}")
wb = ws.setFilter("USINACEG",plantName)

# Retrieve daily worksheet
ws = wb.getWorksheet("Simples Geração de Energia Dia")

# Show plants
print(ws.data)  # Contains data for 'PAU FERRO I'

Sorry to be a pain!

from tableau-scraping.

bertrandmartel avatar bertrandmartel commented on June 7, 2024

@CoderPJM The issue was the ordinal property that was used to build the filter index. Now, it only uses the position of the filter in the array as filter index. This is released in v0.1.25

from tableau-scraping.

CoderPJM avatar CoderPJM commented on June 7, 2024

Amazing, thanks again for such a fast response. Swapped to the latest version and it worked perfectly.

from tableau-scraping.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.