开发者专栏丨30 分钟搞定 Tableau 集成企业微信-人工智能-热点资讯-野望文存-科技 
    欢迎来到野望文存-科技!
当前位置:野望文存-科技 > 热点资讯 > 人工智能 >  开发者专栏丨30 分钟搞定 Tableau 集成企业微信

开发者专栏丨30 分钟搞定 Tableau 集成企业微信

发表时间:2020-05-22 17:31:00  来源:野望文存  浏览:次   【】【】【

















填写文末调查问卷参与抽奖





Tableau 作为最受欢迎的自助式数据分析工具之一常年来受到广大中国客户的青睐,随着移动互联网技术与应用的蓬勃发展,企业内部对于移动应用的需求也呈现爆发式增长。如何将 Tableau 现有的分析结果/报表与企业内部的移动应用深度快捷集成是很多 Tableau 用户关心的话题,这里就让我们用 30 分钟搞定 Tableau 与企业微信之间的集成!你没听错,只要 30 分钟哦!



所谓集成第一个无法绕开的话题就是身份验证,企业微信或者企业自研的移动应用拥有独立的身份验证体系,这就必须与 Tableau Server 的身份做好对应关系,本文我们采用最简单也是最被广泛应用的 Trusted Authorization 验证方式与企业微信的身份做对应。

↗↗↗Tableau Trusted Authorization 的工作机制


通过在 TSM 中配置 Trusted Authorization 的 IP ,Tableau Server 将信仰任何从信任 IP 传输过来的请求,根据请求所绑定的用户名来验证而无需输入密码,我们只需要配置一张企业微信用户和 Tableau Server 用户的对应关系就可以轻松搞定 SSO 和权限管理了(沿用 Tableau Server 用户的权限设置)。


↗↗↗ 在 TSM 中添加 Trusted Authorization 的 IP


按下图示例将企业微信 id 和 Tableau Server 的用户做 1 对 1 绑定关系(注意 Tableau Server 用户必须已存在,微信用户 id 可以使用官方 api 获取)。此对应关系维护了企业微信与 Tableau Server 用户的授权与权限。例如:可以查看所有数据的总经理对应总经理自己已配置好权限的 Tableau Server 用户(zhanghui);仅能看到某区域的销售经理对应该区域销售经理配置好行级别区域数据权限的 Tableau Server 用户(bchen)。

↗↗↗ 企业微信用户 id 与 Tableau Server 用户对应表


解决了身份验证的问题之后我们采用最简单的 JSP 作为示例,通过传入 Tableau Server 用户,报表路径等必要参数来拼接出 URL 。下方为代码示例:


String ticket="";

OutputStreamWriter out1 = null;

BufferedReader in = null;

    try {

//构造请求认证ticket参数,用户名和所要访问的站点信息,如代码里admin是用户名,testsite是站点ID

         StringBuffer data = new StringBuffer();

         data.append(URLEncoder.encode("username", "UTF-8"));

         data.append("=");

         data.append(URLEncoder.encode("admin", "UTF-8"));

         data.append("&");

         data.append(URLEncoder.encode("target_site", "UTF-8"));

         data.append("=");

         data.append(URLEncoder.encode("testsite", "UTF-8"));


 //发送请求到Tableau Server的服务器地址获取ticket

         URL url = new URL("http://tableauserver/trusted");

         URLConnection conn = url.openConnection();

         conn.setDoOutput(true);

         out1 = new OutputStreamWriter(conn.getOutputStream());

         out1.write(data.toString());

         out1.flush();


// 接收返回的ticket信息

         StringBuffer rsp = new StringBuffer();

         in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

         String line;

         while ((line = in.readLine())!= null)

{

                rsp.append(line);

              }

                ticket=rsp.toString();

            }

catch (Exception e)

{

                throw new ServletException(e);

            }

//拼接出含有认证ticket的报表URL地址

String redirectrepurl="http://tableauserver/trusted/"+ticket+"/t/testsite/views/KPI/sheet0?:embed=y&:showAppBanner=false&:display_count=no&:showVizHome=no";

//跳转并打开报表

         response.sendRedirect(redirectrepurl);


PS:关于工作表URL构造和参数传递可以参考下面的文档哦

https://help.tableau.com/current/pro/desktop/zh-cn/embed_structure.htm

https://help.tableau.com/current/pro/desktop/zh-cn/embed_list.htm

将 JSP 放入到之前配置 Trusted Authorization IP 的 web 服务器中使其可以被企业微信调用后,我们就可以通过企业微信后端轻松配置啦。如下图我们通过一个 JSP 配置了 8 张报表参数不同的报表。


↗↗↗ 企业微信后台配置界面


↗↗↗ 企业微信集成 Tableau 示例


是不是很方便呢?更多与集成、二次开发相关的内容我们会持续更新,Tableau 中国开发者社区也在筹建中,敬请关注。





我们也想听到您的想法,诚邀您填写调查问卷,更好地传递您的心声,成功提交调查问卷的小伙伴可参与抽奖获取 Tableau 送出的礼品哦~



赶快扫描下方二维码 ?

提交调查问卷

参与幸运抽奖吧~





限时福利

疫情期间,为了帮助您获得自信回答业务数据问题的能力及面向未来的技能,Tableau 推出为期 90 天的免费 eLearning 课程以及 Desktop Specialist 认证考试 50% 折扣,帮助个人快速提升职场技能,加速企业复工复产进程。


限时日期:6 月 30 日

点击图片了解详情



升级试用 Tableau 2020.2


复制链接至浏览器,即可免费试用 Tableau 最新版本。

https://www.tableau.com/zh-cn/products/desktop/download?utm_campaign_id=2020205&utm_campaign=Prospecting-CORE-ALL-ALL-ALL-ALL&utm_medium=Social&utm_source=WeChat&utm_language=CN&utm_country=GrCHINA-CN



欢迎留言


如果小伙伴们对于 Tableau 产品有其他问题或需求,欢迎给我们留言~~



Tableau 中国官方微信定期为您推送最新行业趋势、热点资讯、精彩活动等信息。立即订阅,官方信息一手掌控,更多精彩,更多新鲜,敬请期待!



在看点一下 大家都知道


点击
阅读原文
,下载最新版 Tableau!
责任编辑:蔡学森