解决Python设置Tableau仪表板参数失败的问题
解决TableauScraper无法设置仪表板筛选器的问题
你的问题核心是把**筛选器(Filter)当成了参数(Parameter)**来处理,Tableau里的控件分为参数和筛选器两种,你提到的Actual Let Date Range和Bidder Rank属于筛选器,所以用getParameters获取不到,setParameter也不会生效。
正确处理步骤:
- 先获取工作表的所有筛选器,确认目标筛选器的准确名称和可选值
- 使用
setFilter方法设置筛选器值,而非setParameter
修改后的代码:
import requests from tableauscraper import TableauScraper as TS init_url = "https://tableau.txdot.gov/views/BidItemAverageCost/BidItemAvgCostDashboard?%3Aembed=y&%3AisGuestRedirectFromVizportal=y" ts = TS() ts.loads(init_url) workbook = ts.getWorkbook() ws = workbook.getWorksheet("Bid History Avg Cost") # 先打印所有筛选器,确认目标筛选器的名称和可选值 filters = ws.getFilters() print("当前工作表的筛选器:", filters) # 设置Bidder Rank筛选器为Low Bidder workbook = workbook.setFilter("Bidder Rank", "Low Bidder") # 设置Actual Let Date Range筛选器为12个月(根据筛选器实际值调整,比如可能是"12 Months") workbook = workbook.setFilter("Actual Let Date Range", "12 Months") # 获取更新后的数据 updated_data = workbook.getCrossTabData(sheetName="Bid History Avg Cost") print(updated_data)
注意事项:
- 运行代码时先查看打印的筛选器列表,确认
Actual Let Date Range的可选值是否为"12 Months",如果不是(比如可能是其他格式的字符串),需要用实际的可选值替换 - 每次调用
setFilter后,需要重新赋值给workbook,因为该方法会返回更新后的工作簿对象
内容的提问来源于stack exchange,提问作者bitstory
相关产品推荐
相关产品推荐

