在网页中调用Tableau报表并定时刷新

1、添加服务器信任;
在tableau服务器上进入命令行(CMD),进入bin目录,执行:
tabadmin set wgserver.trusted_hosts "<授信服务器地址1>, <授信服务器地址2>, <授信服务器地址3>"
tabadmin restart
两个命令,授信并重启Tableau服务(注意授信服务器地址逗号后面有个空格,这个是文档写的要求)。
如果是Linux,则执行:
tsm authentication trusted configure -th "<授信服务器地址1> ", "<授信服务器地址2> ", "<授信服务器地址3>
tsm pending-changes apply
然后重启tableau服务。
2、修改如下脚本,作为外部调用的网页。
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.util.*" %>
<%
String SERVERHOST="<Tabkleau IP>"; //这里填写Tabkleau服务器IP
String SERVERPORTAL="<Tabkleau portal>"; //这里填写Tabkleau服务器端口
String UserName="<Tabkleau username>"; //这里填写Tabkleau登录用户名
String views="3_2/3"; //这里填写要打开的视图的信息(例如http://<server ip>/#/views/3_2/3,则取3_2/3)
String url="http://"+SERVERHOST+":"+SERVERPORTAL+"/trusted";


//尝试登陆Tableau服务器,获取令牌
String token="";
PrintWriter outtStream = null;
BufferedReader in = null;
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
outtStream = new PrintWriter(conn.getOutputStream());
// 发送请求参数
outtStream.print("username="+UserName);
// flush输出流的缓冲
outtStream.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
token += line;
}

catch (Exception e) {
out.println("发送 POST 请求出现异常!"+e);
return;
}
finally{
try{
if(outtStream!=null){
outtStream.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
return;
}
}


if(token==null || token.equals("") || token.equals("-1"))
{
out.println("当前站点不受服务器信任,请添加站点到Tableau授信服务器列表.");
return;
}
%>
<style>
body,html{width:100%;height:100%;margin:0px;padding:0px;}
</style>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<script type='text/javascript' src='http://<%=SERVERHOST%>:<%=SERVERPORTAL%>/javascripts/api/tableau-2.min.js'></script>
<script type="text/javascript" language="javascript">
    var viz=null;
    function initViz() 
{
        var containerDiv = document.getElementById("vizContainer"),
        url = "http://<%=SERVERHOST%>:<%=SERVERPORTAL%>/trusted/<%=token%>/views/<%=views%>";
        options = {
            hideTabs: true,
            hideToolbar: true,
onFirstInteractive: function () {
setInterval(refreshReport, 60*1000);
}

        };
        viz = new tableau.Viz(containerDiv, url, options);
    }
    function refreshReport()
    {
        /*var sheet = viz.getWorkbook().getActiveSheet();
alert(sheet.getName());*/
viz.refreshDataAsync();
    }
</script>
</head>  
<body onLoad="initViz();">
    <div id="vizContainer" style="width:100%;height:100%; background-color:#000000">
    </div>        
</body>
</html>
红色加粗部分是间隔1分钟刷新的代码,根据实际需要,可以修改。
在Python自动刷新Tableau数据可以借助Tableau提供的Web Data Connector API或者使用Tableau的REST API来实现。以下是一个简要的介绍和步骤: 1. 使用REST API:Tableau Server和Tableau Online支持REST API,可以通过这些API来管理资源、数据源刷新等。首先,你需要获取Tableau Server或Online的个人访问令牌(Personal Access Token, PAT),然后使用这个令牌发送HTTP请求来刷新数据。 2. 使用Python的`requests`库:可以通过编写Python脚本来发送HTTP POST请求到Tableau刷新端点。你需要提供正确的服务器地址、API路径、PAT以及数据源的ID等信息。 下面是一个使用Python和REST API刷新Tableau数据源的简单示例代码: ```python import requests import json # Tableau服务器或Online的基础URL base_url = 'https://your-tableau-server-or-online-site.com' # 你的个人访问令牌 token = 'your-personal-access-token' # 数据源ID datasource_id = 'your-datasource-id' # 构建请求头,包含授权信息 headers = { 'Content-Type': 'application/json', 'X-Tableau-Auth': token } # 刷新数据源的URL refresh_url = f'{base_url}/api/{api-version}/sites/{site-id}/datasources/{datasource_id}/refresh' # 发送刷新请求 response = requests.post(refresh_url, headers=headers) # 检查响应状态 if response.status_code == 200: print('数据源刷新成功') else: print('数据源刷新失败:', response.text) # 注意:api-version、site-id等参数需要根据实际情况替换 ``` 3. 错误处理:在实际使用,需要对请求进行错误处理,包括网络错误、权限问题等。 4. 定时任务:可以使用Linux的`cron`或Windows的任务计划程序来定时执行Python脚本,从而实现定期自动刷新
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值