能否通过Tableau Rest API提取Tableau工作簿中的Custom Sql代码?
能否通过Tableau REST API提取工作簿中的Custom SQL代码?
能,但不是直接通过REST API获取,需要结合下载工作簿+解析XML的方式实现,不少数据团队已经实践过这套流程来管控Custom SQL并同步到Git仓库。
具体操作步骤:
第一步:用Tableau REST API下载目标工作簿
调用Download Workbook接口(对应端点:GET /api/{version}/sites/{siteId}/workbooks/{workbookId}/content),获取.twb或.twbx格式的文件。如果是打包的.twbx,需要先解压出内部的.twb文件(这是纯XML格式的文本文件)。第二步:解析
.twb文件提取Custom SQL.twb里的Custom SQL会存放在<relation>标签下的<sql>节点中。可以用任意XML解析工具处理,比如Python的xml.etree.ElementTree:import xml.etree.ElementTree as ET # 加载twb文件 tree = ET.parse('your_workbook.twb') root = tree.getroot() # 命名空间处理(Tableau的XML有命名空间) ns = {'tableau': 'http://tableau.com/api'} # 遍历所有包含Custom SQL的节点 for sql_node in root.findall('.//tableau:sql', ns): custom_sql = sql_node.text.strip() print("提取到的Custom SQL:\n", custom_sql)第三步:同步到Git仓库
把提取出的Custom SQL按工作簿/数据源名称命名保存(比如workbook_name_datasource.sql),然后通过Git命令或脚本提交到代码仓库,还可以做定时任务自动同步更新。
实践注意点:
- 确保调用REST API时拥有足够权限(至少需要工作簿的下载权限)
- 处理命名空间:Tableau的XML带有命名空间,解析时必须指定,否则找不到对应节点
- 对于发布到Tableau Server/Cloud的数据源,也可以通过
Download Datasource接口下载.tds/.tdsx文件,解析方式和.twb一致
内容的提问来源于stack exchange,提问作者aminfoo
相关产品推荐
相关产品推荐

