# Smartchart开发手册

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/ Recent content on Smartchart开发手册 Hugo -- gohugo.io

#

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1API/ Mon, 01 Jan 0001 00:00:00 +0000 https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1API/ SmartChart的数据集功能, 可以非常方便的实现数据对外微服务 # 权限设定 # 帐号访问权限 # 超级管理员可以在首页右上角用户图标的菜单中, 找到&quot;服务配置&quot;打开 比如需要调用API的用户名为test 和 test2，用户名需要是在你的用户设定中存在的,内容如下: { &#34;test&#34;: { &#34;token&#34;: &#34;smartchart&#34; }, &#34;test2&#34;: { &#34;token&#34;: &#34;smartchartxxx&#34;, &#34;host&#34;: [&#34;10.10.10.10&#34;,&#34;10.10.10.23&#34;], &#34;limit&#34;: 60, &#34;log&#34;:1, &#34;cors&#34;: 1 } } 可选设定参考test2 host:API白名单配置，limit:一分钟内可调用次数, log:日志记录方式. cors:永许跨域访问 数据集权限 # 在数据集权限管理中, 将你需要开放的数据集的权限, 设定给对应的用户 请求方式 # 加密接口请求方式（推荐） # 下文提到的&quot;秘钥&quot;即上文设定中的&quot;token&quot;, 注意上文的token非下文提到的token GET 请求 # #接口请求格式: url= &#39;/echart/dataset_api/?visitor=xxx&amp;token=xxx&amp;type=xxx&amp;stamp=xxxxx&amp;param={&#34;xx&#34;:&#34;xxx&#34;,&#34;xx&#34;:&#34;xxxx&#34;}&#39; # 参数说明 visitor: 用户名 type: 接口数据集ID stamp: 时间戳(1970年1月1日到生成时间的毫秒数) token: 采用sha1加密, token=SHA1(秘钥 + stamp + visitor + type) param: 数据集查询参数清单(可选), 格式json字符串, 如: &#39;{&#34;参数A&#34;:&#34;xxxx&#34;, &#34;参数B&#34;:&#34;xxxx&#34;}&#39; # 接口返回格式Json: { &#34;data&#34;:[[]], &#34;result&#34;:&#34;success&#34;, &#34;maxpg&#34;:1, &#34;pg&#34;:1 } # 返回值说明: data : 二维数组, 第一行为表头, 样列数据如下 [[&#34;heroname&#34;, &#34;qty&#34;],[&#34;镜&#34;,658],[&#34;猪八戒&#34;,591]] result : success 或 error maxpg/pg : GET请求固定为1不分页 POST请求(适用于后台定时同步数据，查询请用GET请求方法) # #接口请求格式: url: /echart/dataset_api/ # 请求参数data: { &#34;visitor&#34;:&#34;xxx&#34;, &#34;token&#34;:&#34;xxx&#34;, &#34;stamp&#34;:xxxxx, &#34;type&#34;:&#34;xxx&#34;, &#34;pagesize&#34;:&#34;xxx&#34;, &#34;pg&#34;:&#34;xxx&#34;, &#34;param&#34;:&#39;{&#34;xxx&#34;:&#34;xxxx&#34;}&#39; } # data参数说明 visitor: 用户名 type: 接口数据集ID stamp: 时间戳(1970年1月1日到生成时间的毫秒数) token: 采用sha1加密, token=SHA1(秘钥 + stamp + visitor + type) Pagesize: 采用分页, 每页的数据量大小 pg: 返回第几页 param: 数据集查询参数清单(可单), 拼接成json字符串, 如: &#39;{&#34;参数A&#34;:&#34;xxxx&#34;, &#34;参数B&#34;:&#34;xxxx&#34;}&#39; #接口返回格式Json: { &#34;data&#34;:[[]], &#34;result&#34;:&#34;success&#34;, &#34;maxpg&#34;:xxx, #最大页数 &#34;pg&#34;:xx, #当前页数 &#34;casheflag&#34;: xx, #如果是999说明命中缓存 &#34;total&#34;:xx, #总条数 } 注意： 只有post是分页的, 第一页是带标题的， 后面页不带标题 由于post方式会使用缓存进行分页,如命中缓存传参不会生效，小数据量请使用get方式请求 不要请求大数据量，大量数据请采用limit, offset传参方式进行分页

#

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E4%B8%8B%E8%BD%BD/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E4%B8%8B%E8%BD%BD/
应用场景: # 需要要下载数据集的数据到本地 使用方法 # 仅需要录活使用ds_download这个函数, 你可以开发出非常个性化的下载功能 ds_download(name, dataset) 参数说明: name: 文件名称 dataset: 可以是二维数组也可以是字符串 样例: # 可在&quot;模板&quot; 中新建一个下载按钮, 并指定一个ID,如id_down1, 拖拽到你需要的位置 在任意一个图形开发或js代码段中加入以下代码即可 $(&#39;#id_down1&#39;).click(()=&gt;{ ds_download(&#39;报表数据.csv&#39;, dataset); }); 这样就可以实现点击按钮下载数据了

#

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E5%A1%AB%E6%8A%A5/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E6%95%B0%E6%8D%AE%E5%A1%AB%E6%8A%A5/
应用场景 # 收集用户端录入的数据 前端处理好的数据回写到任意系统 制做问卷系统 埋点应用 使用方法 # 新建一个懒加载数据集,填写内容格式如下: # 如果需将数据保存到对应的表名 dataset={ &#34;table&#34;:&#34;表名&#34; } 如需指定字段, 可如下方式填写 dataset={ &#34;table&#34;:&#34;表名(字段1, 字段2)&#34; } 在&quot;模板&quot;中编写录入组件代码, # 具体可参考视屏 &lt;h1 class=&#34;smtdrag&#34; id=&#34;id_1648895680659&#34;&gt;数据填报&lt;/h1&gt; &lt;div class=&#34;smtdrag&#34; id=&#34;id_1648895855760&#34;&gt; &lt;label&gt;用户&lt;/label&gt;&lt;input id=&#34;id_visitor&#34;&gt; &lt;/div&gt; &lt;div class=&#34;smtdrag&#34; id=&#34;id_1648895859160&#34;&gt; &lt;label&gt;动作&lt;/label&gt;&lt;input id=&#34;id_action&#34;&gt; &lt;/div&gt; &lt;div class=&#34;smtdrag&#34; id=&#34;id_1648895956207&#34;&gt; &lt;button id=&#34;idbtn01&#34;&gt;提交&lt;/button&gt; &lt;/div&gt; 在&quot;模板&quot; 中编写JS代码 $(&#39;#idbtn01&#39;).click(function(){ //获取填写的数据 let visitor = $(&#39;#id_visitor&#39;).val(); let action = $(&#39;#id_action&#39;).val(); //拼接一个填写好的数组 let dataset = [visitor, action]; //上传填写的数据 //0:为上文新建的数据集序号, dataset:要写入的数据 print(ds_save(0, dataset)); }) 更多关于写入数据库的数据集格式说明 # //只写入一行数据, 样列如下: dataset = [&#39;a&#39;,&#39;b&#39;] //同时写入多行数据: dataset = [[], [&#39;a1&#39;,&#39;b1&#39;],[&#39;a2&#39;, &#39;b2&#39;]] //如果需要自动记录写入者用户名: dataset = [&#39;$username&#39;, &#39;b&#39;] mongodb写入方式

#

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E5%90%8E%E5%8F%B0API%E5%88%B7%E6%96%B0/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/6.%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91PRO/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1/%E5%90%8E%E5%8F%B0API%E5%88%B7%E6%96%B0/
应用场景 # 有ETL流程，需要等待后台数据刷新完成后，再触发仪表盘的刷新，数据未完成刷新，仪表盘不刷新 针对有一些耗时的查询, 虽然smartchart有缓存加速, 但是在第一次刷新时可能不能达到极速 用户需要随时都能体验到极速的打开效果 使用后台API刷新，建意将仪表盘中数据集的缓存时间设置长一些，比如2天（2880分钟） 后台数据主动刷新接口 # (购买专业版本后支持) 你需要在setting.py中设定API_TOKEN API_TOKEN = &#39;xxxxxxxx&#39; 找到你要刷新的仪表盘编码, 你可以在打开的仪表盘url上面找到这个type id 后台访问如下api url即可 http://ip:端口/echart/refresh_ds/?type=你的报表ID&amp;token=你设定的API_TOKEN 关于定时刷新 # 为保持产品的轻量化及坚持专业的产品做专业的事情, 归一化统一化的架构设计, 我们不会集成相关调度系统, 一般我们推荐使用您自有的调度工具或平台, 如airflow, 我们也有相关的配套产品 如果您仅仅是简单应用, 也无需使用专用调度来增加运维复杂度, 可以使用linux自带的即可 新建一个sh文件, 假设目录在/data/smartchart vim refresh_smartchart.sh 写入需要刷新的脚本 echo start refresh $(date &#34;+%Y-%m-%d %H:%M:%S&#34;) curl http://ip:端口/echart/?type=你的报表ID1&amp;token=你设定的API_TOKEN curl http://ip:端口/echart/?type=你的报表ID2&amp;token=你设定的API_TOKEN echo end refresh $(date &#34;+%Y-%m-%d %H:%M:%S&#34;) 如果你的网址是https, 可如下方法使用curl curl -k --insecure &#34;https://www.baidu.com” 修改为可执行文件 chmod 775 refresh_smartchart.sh 使用crontab来定时执行 # 编辑crontab crontab -e # 比如需要每天晚上5点10分执行 10 5 * * * /data/smartchart/refresh_smartchart.