文档章节

Saiku多用户使用时数据同步刷新(十七)

o
 osc_fmg49rzg
发布于 2019/03/20 13:09
字数 1081
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Saiku多用户使用时数据同步刷新

这里我们需要了解一下关于saiku的刷新主要有两种数据需要刷新:

>1 刷新数据库的表中的数据,得到最新的表数据进行展示。

>2 刷新cube信息,得到最新的cube配置信息,避免 error loading page错误。

 

如果我们只使用admin用户登录saiku的话,是不存在任何问题的,直接点击saiku中刷新按钮即可达到刷新效果啦!

 

但是 如果我们配置了多用户使用saiku,且其它用户不是ROLE_ADMIN角色的话,是没有刷新按钮的,这时候就要靠我们的脚本刷新了。(而且总是去登录saiku点击按钮执行saiku也比较麻烦,所以还是比较推荐用脚本控制刷新哦)

首先我们得知道saiku刷新时会调用一个刷新接口,所以我们只要做到在脚本中请求对应用户的刷新接口即可。

 

刷新脚本内容如下:

saiku_refresh.sh

#!/bin/bash

dir=`pwd`
filename=/cookie.txt
filePath=${dir}${filename}
echo $filePath

if [ -f $filePath ] ; then
echo 'cookie.txt exists'
rm -rf $filePath
echo 'The old cookie.txt is  removed.'
fi
echo 'Begin to get new Cookie... '

curl -c ./cookie.txt -d "language=zh&password=admin&username=111" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./cookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/admin/discover/refresh" 1>saiku_refresh_data.txt
echo 'admin refresh OK!!!' 1>>saiku_refresh_data.txt
echo 'admin refresh end!!!'
if [ -f $filePath ] ; then
echo 'cookie.txt exists'
rm -rf $filePath
echo 'The old cookie.txt is  removed.'
fi

curl -c ./cookie.txt -d "language=zh&password=111&username=test1" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./cookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/test1/discover/refresh" 1>>saiku_refresh_data.txt 
echo 'test1 refresh OK!!!' 1>>saiku_refresh_data.txt
echo 'test1 refresh end!!!'

if [ -f $filePath ] ; then
echo 'cookie.txt exists'
rm -rf $filePath
echo 'The old cookie.txt is  removed.'
fi

curl -c ./cookie.txt -d "language=zh&password=111&username=test2" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./cookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/test2/discover/refresh" 1>>saiku_refresh_data.txt
echo 'test2 refresh OK!!!' 1>>saiku_refresh_data.txt
echo 'test2 refresh end!!!'

echo 'All refresh end!!!'

 

参数解析:

  password  参数指定需要被刷新的用户的密码

  username  参数指定需要被刷新的用户的用户名

  http://10.22.33.44:8080  指定saiku的访问地址

  /saiku/rest/saiku/username/discover/refresh :这便是被调用的刷新接口 ,username是根据用户变动的。

    eg:  需要刷新admin用户的数据信息,这里便需要改为 /saiku/rest/saiku/admin/discover/refresh

      需要刷新test1用户的数据信息,这里便需要改为 /saiku/rest/saiku/test1/discover/refresh

  

脚本解析:

1.得到当前脚本所在的目录,指定用来保存cookie信息的文件为cookie.txt

dir=`pwd`
filename=/cookie.txt
filePath=${dir}${filename}
echo $filePath

  

2.判断当前脚本同级目录是否已存在cookie.txt文件,如果已存在就删除,如果未存在就输出提示开始获取用户新的cookie信息。

if [ -f $filePath ] ; then
echo 'cookie.txt exists'
rm -rf $filePath
echo 'The old cookie.txt is  removed.'
fi
echo 'Begin to get new Cookie... '

  

3. 将admin用户的验证信息存到cookie.txt文件中,并调用刷新接口,将刷新接口返回的数据信息存入 saiku_refresh_data.txt文件中,随后给出提示信息,admin用户的数据信息已刷新完成。

curl -c ./cookie.txt -d "language=zh&password=admin&username=111" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./cookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/admin/discover/refresh" 1>saiku_refresh_data.txt
echo 'admin refresh OK!!!' 1>>saiku_refresh_data.txt
echo 'admin refresh end!!!'

 

4.开始进行下一个用户的数据刷新 test1, j继续判断cookie.txt文件是否存在,如果已存在就删除。

if [ -f $filePath ] ; then
echo 'cookie.txt exists'
rm -rf $filePath
echo 'The old cookie.txt is  removed.'
fi

  

5.将test1用户的验证信息存到cookie.txt文件中,并调用刷新接口,将刷新接口返回的数据信息存入 saiku_refresh_data.txt文件中,随后给出提示信息,test1用户的数据信息已刷新完成。

curl -c ./cookie.txt -d "language=zh&password=111&username=test1" http://10.22.33.44:8080/saiku/rest/saiku/session
curl -b ./cookie.txt "http://10.22.33.44:8080/saiku/rest/saiku/test1/discover/refresh" 1>>saiku_refresh_data.txt 
echo 'test1 refresh OK!!!' 1>>saiku_refresh_data.txt
echo 'test1 refresh end!!!'

  

6. test2用户刷新与test1用户刷新雷同,后面如果又给saiku添加其他用户也继续往后添加即可。(脚本参考test1 用户刷新)

 

切记需要对每个用户的数据都进行刷新哦,每个用户都要各调一遍刷新接口!!!  只刷新admin是不行的,其他用户获取不到最新的cube信息就会抛出异常!!! (error loading page)

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
saiku 分布式实践

saiku比较吃内存,一旦人多了,那么内存可能不够,所以会考虑主从结构,分担压力。为了保证数据的稳定性,也会有类似的考虑,那么问题来了,如何实现saiku的分布式搭建哪? 我阅读了一些国内...

李秋
2016/06/29
0
0
Saiku缓存处理(七)

Saiku缓存处理方案 Saiku默认是从缓存中读取数据的(如果缓存中有数据的话),所以用户看到的数据不一定是最新的,如果需要看到最新的的数据需要手动刷新数据或者更改配置信息。 Saiku获取实...

osc_xlt7v4t5
2019/02/22
4
0
让SaiKu实时展现查询数据

在默认的情况下,saiku是不能对数据进行实时展现的,只能通过下图的刷新按钮或者重启服务器来刷新数据 这样以来会有很多的麻烦,每天得手动去刷新,这个操作只有管理员可以操作,在刷新以前客...

sucre03
2014/03/25
0
0
Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要...

osc_igiogs8k
2019/04/15
2
0
让SaiKu实时展现查询数据

在默认的情况下,saiku是不能对数据进行实时展现的,只能通过下图的刷新按钮或者重启服务器来刷新数据 这样以来会有很多的麻烦,每天得手动去刷新,这个操作只有管理员可以操作,在刷新以前客...

sucre03
2014/03/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
28分钟前
31
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
0
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
31分钟前
18
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
50分钟前
34
0
拉勾网拉你上勾

预览 需求简介 拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,...

木下瞳
2019/04/17
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部