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)

Saiku多用户使用时数据同步刷新(十七)的更多相关文章

  1. gpu显存(全局内存)在使用时数据对齐的问题

    全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles  很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4B ...

  2. Saiku嵌入系统使用时传参数访问saiku(十六)

    Saiku嵌入系统使用时传参数访问saiku Saiku通过iframe嵌入其他系统使用时,我们可以设定参数信息,然后根据url中参数对结果进行筛选哦. 这里我们实现的是根据日期字段进行范围查询,UR ...

  3. 小白学数据分析----->移动游戏的使用时长分析

    写下该文章,是因为之前看到了几款游戏一个典型的玩家刺激活动,在<多塔联盟>,<萌江湖>等多款游戏的设计中都有体现,如下图所示: 这个功能点的设计,今天在这里讲的更多的还是跟数据 ...

  4. [开发笔记]-sqlite数据库在使用时遇到的奇葩问题记录

    有时候做些简单的项目一般都会选择sqlite数据库,优点有很多,这里就不详细说了. 在此主要记录一些平时在使用时遇到的问题及解决方法.希望能对大家有所帮助. --------------------- ...

  5. PowerDesigner15使用时的十五个问题

    15个问题列表: No.1:是不是一定要从CDM开始设计,然后在进行PDM的设计? NO.2:工具栏palette不见了,如何把它找出来? NO.3: 如何建立与数据库的关联? NO.4: 域和数据项 ...

  6. 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动

    重新安装MySQL数据库,由于安装的时候马虎,一路next(事实上,某些地方需要严格的配置,我忘记注意了),导致现在出了很多麻烦. 错误信息: 本地计算机上的MySQL服务启动后停止.某些服务在未由其 ...

  7. bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验

    bootstrap-datepicker 与bootstrapValidator同时使用时,选择日期后,无法正常触发校验 (解决办法) http://blog.csdn.net/biedazhangs ...

  8. python基本使用时常见错误

    python基本使用时常见错误 字符编码错误 如果要学习计算机编程语言,首先就要搞懂字符编码,否则在以后的学习过程中,将会是一场噩梦.在一开始使用的时候,我就遇到了很多的关于字符编码的问题,做个简单的 ...

  9. MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止

    这几天因为工作需求,需要把MySQL请出来,所以将尘封已久的MySQL进行启动.可是事与愿违,兴许是许久没有访问MySQL了,MySQL生气的不理我,并向外抛出一阵阵报错.1.其中一个是:Window ...

随机推荐

  1. [Python] 建 Django 项目

    Python和Django的安装见这里:http://www.runoob.com/django/django-install.html 安装 Django 之后,您现在应该已经有了可用的管理工具 d ...

  2. leetcode 算法分类

    来源  https://www.bilibili.com/video/av42947553 advance 二分查找 bst dp  敲黑板 重点 图 graph 查找  search 很多都和DP吻 ...

  3. STS中db.properties配置文件

    db.name=root db.password=root db.url=jdbc:mysql://localhost:3306/day13?useUnicode=true&character ...

  4. mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案

    ## 啊哈哈 这个简单,直接给出当前mac电脑登录账号密码即可,^_*,拿走不谢!!

  5. su与su -的区别

    su命令从普通用户切换到root用户下虽然可以切换,但是切换过后它所属的环境变量没有切换回原本属于root本身该有的环境变量,使用su - root 就可以切换会本来用户所属自身的变量

  6. Scrapy学习之路(一)————环境配置

    一.问题环境安装 首先scrapy这个爬虫框架是基于twisted完成的因此,在安装scrapy之前需要安装twisted.否则直接安装scrapy就会直接出错:Failed building whe ...

  7. jQuery获取元素的方法

    1·$(".box").offset().left 获取盒子左边到浏览器左侧的距离(上右下相同): 2·$("span").width() 获取盒子的宽度(高度 ...

  8. contaner

    what Container技术是直接将一个应用程序所需的相关程序代码.函式库.环境配置文件都打包起来建立沙盒执行环境 history 早在1982年,Unix系统内建的chroot机制也是一种Con ...

  9. php常用字符串方法

    chop()        移除字符串右侧的空白字符或其他字符 ltrim()        移除字符串左侧的空白字符或其他字符 rtrim()        移除字符串右侧的空白字符或其他字符 tr ...

  10. Git合并指定一系列commits到另一个分支

    Git合并指定文件到另一个分支经常被问到如何从一个分支合并特定的文件到另一个分支.其实,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit首先, ...