使用Python及Tableau REST API导出视图,登录后如何访问工作簿?
操作实现步骤
1. 访问工作簿与获取目标视图
你使用的tableauserverclient库已经封装了Tableau REST API的所有基础请求逻辑,无需手动编写GET请求,直接调用库内置方法即可完成工作簿访问、视图导出操作。你可以在原有登录逻辑的上下文内补充以下代码:
with server.auth.sign_in_with_personal_access_token(tableau_auth): print('[Logged in successfully to {}]'.format(server_url)) # ---------- 获取所有工作簿,也可按名称筛选目标工作簿 ---------- all_workbooks, pagination_item = server.workbooks.get() # 打印所有工作簿名称和ID,方便定位目标资源 for wb in all_workbooks: print(f"工作簿名称:{wb.name}, 工作簿ID:{wb.id}") # 示例:按名称筛选目标工作簿,替换为实际工作簿名称即可 target_wb = next((wb for wb in all_workbooks if wb.name == "你的目标工作簿名称"), None) if not target_wb: print("未找到目标工作簿") exit() # ---------- 获取目标工作簿下的所有视图 ---------- # 填充工作簿关联的视图列表 server.workbooks.populate_views(target_wb) # 打印该工作簿下所有视图名称和ID for view in target_wb.views: print(f"视图名称:{view.name}, 视图ID:{view.id}") # 示例:按名称筛选目标视图,替换为实际视图名称即可 target_view = next((v for v in target_wb.views if v.name == "你的目标视图名称"), None) if not target_view: print("未找到目标视图") exit()
2. 导出视图为CSV格式
在获取到目标视图后,直接调用视图的CSV导出方法即可:
# ---------- 导出视图为CSV ---------- server.views.populate_csv(target_view) # 保存到本地,文件名可自定义 with open(f"./{target_view.name}.csv", "wb") as f: # TSC返回的CSV为字节流格式,直接拼接写入即可 f.write(b"".join(target_view.csv)) print(f"CSV导出成功,路径:./{target_view.name}.csv")
3. 导出视图为图片格式
支持自定义图片分辨率、是否使用缓存等参数,示例如下:
# ---------- 导出视图为PNG图片 ---------- # 配置导出参数 image_req_option = TSC.ImageRequestOptions( max_age=1, # 不使用缓存,拉取最新视图内容 resolution=TSC.ImageRequestOptions.Resolution.High # 导出高分辨率图片 ) server.views.populate_image(target_view, image_req_option) # 保存到本地 with open(f"./{target_view.name}.png", "wb") as f: f.write(target_view.image) print(f"图片导出成功,路径:./{target_view.name}.png")
常见问题说明
- 如果导出的CSV出现中文乱码,可将二进制内容转为UTF-8编码后再写入文件即可
- 若需要对视图添加筛选条件后导出,可以在CSV/图片导出的请求参数中添加对应筛选规则
- 当工作簿/视图数量过多时,可以使用TSC的分页查询方法拉取全量资源列表
内容的提问来源于stack exchange,提问作者Abhay
相关产品推荐
相关产品推荐

