Redash导出仪表盘中所有数据为Excel文件
- 首发:2021-03-10 18:38:50
- 教程
- 4208
在《Redash刷新整个仪表盘API》一文中,提到了导出仪表盘中所有的Widget数据为Excel文件
的需求。
实现该需求只需要调用官方的API,但是官方API文档对于使用的描述基本没有。
第一步:获取仪表盘数据,得到QueryID
通过请求
GET /api/dashboards/<dashboard_slug>?api_key=<API_KEY>
获取仪表盘数据。
得到类似上图这样的数据。里面具有Widget
所有信息。
第二步:通过 QueryIDs 启动查询
遍历widgets
,拿到所有需要的item.visualization.query.id
,然后挨个请求:
POST /api/queries/<item.visualization.query.id>/results?api_key=<API_KEY>
{
id: <item.visualization.query.id>,
parameters: {
created_at: {
start: <start> + ' 00:00:00',
end: <end> + ' 23:59:59'
}
}
}
这个请求的含义是“启动新的查询执行或返回缓存的结果”,此API将默认返回缓存的结果。如果没有缓存的结果,则新的执行作业开始,并返回作业对象。要绕过陈旧的缓存,请包含一个名为max_age
值为整数秒
的参数。如果缓存的结果早于max_age
,则缓存将被忽略,并开始新的执行。如果设置max_age
为0
则始终开启新的执行,返回最新的执行结果。
这是一个异步设计的请求,需要对请求结果进行判断。如果返回的结果中含有job
字段,说明启动了一个新的作业,否则将返回包含query_result
的数据。
查询作业结果:
/api/jobs/<job_id>
- GET:返回查询任务结果(作业)
- 可能的状态:
- 1 ==待处理(等待执行)
- 2 ==已开始(正在执行)
- 3 ==成功
- 4 ==失败
- 5 ==已取消
- 状态为成功时,结果包括
query_result_id
- 可能的状态:
也可以不查询结果,不传入max_age: 0
的情况下,重复调用接口,则作业完成后必然包含query_result
数据。
第三步:拼接文件下载地址
拿到query_result
后,拼接如下地址:
https://example.com/api/queries/<item.visualization.query.id>/results/<query_result.id>.xlsx?api_key=<API_KEY>
此时将可以下载被自动命名的.xlsx
Excel文件(跟后台手工下载的一样)。
修改拼接URL的文件名后缀,可以实现TSV
、CSV
、JSON
文件的下载。
其它
整个过程涉及遍历接口、处理异步设计的接口、根据策略重新调用接口、多文件下载,对刚入门的同学来说是个不错的练手实例。
除特别注明外,本站所有文章均为原创。原创文章均已备案且受著作权保护,未经作者书面授权,请勿转载。
打赏
交流区
暂无内容
老师你好,我希望能用一个openwrt路由器实现IPv4和IPv6的桥接,请问我该如何实现?我尝试了直接新增dhcpv6的接口,但是效果不甚理想(无法成功获取公网的ipv6,但是直连上级路由的其他设备是可以获取公网的ipv6地)
![%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE20241205230845.png](https://cdn.wyr.me/visitor-files/2024-12-05/1733411344287屏幕截图 2024-12-05 230845.png)你好
,为什么我这里是0039 813C 0600 0075 16xx xx xx,只有前6组是相同的,博客中要前8位相同,这个不同能不能照着修改呢?我系统版本是Win1124H2
大神你好,win11专业版24h2最新版26100.2033,文件如何修改?谢谢
win11专业版24h2最新版26100.2033,Windows Feature Experience Pack 1000.26100.23.0。C:\Windows\System32\termsrv.dll系统自带的这个文件,39 81 3C 06 00 00 0F 85 XX XX XX XX 替换为 B8 00 01 00 00 89 81 38 06 00 00 90。仍然无法远程连接。原来是win11 21h2系统,是可以远程链接的。共享1个主机,2个显示器,2套键鼠,各自独立操作 各自不同的账号,不同的桌面环境。
博主,win11专业版24h2最新版,C:\Windows\System32\termsrv.dll系统自带的这个文件,找不到应该修改哪个字段。我的微信:一三五73二五九五00,谢谢