肆拾捌- 当我们在用 Tableau Dashboard Extension 时,我们到底看到什么? 绝望之旅 (三)

1. 我们必须设置 Debug

在调试 Tableau 扩展时,使用的是 Chrome 浏览器,详情可参考官网设置:
Debug Extensions in Tableau Desktop
其实就只需要一部,你需要在你的 Tableau 快捷方式里面增加一个配置:
添加
添加这段话后,每次打开 Tableau ,它就会创建一个 web app,然后你在浏览器里面输入:http://localhost:8696/ ,就能到达调试页面了。
但这里需要注意一个坑,TableauDebuger 呢,是不支持 Chrome 浏览器 80 及以后的,各位需要注意浏览器不要更新到最新。
如果你浏览器版本太新,建议先卸载,然后通过以下网址下载79版本的:
chromedownloads

2. tableau.extensions

好了!让我们来看看 Tableau 扩展能给我们带来什么东西,首先大家可以开着官网 API 文档
API Reference


2.1 点选

在我们的 Debuger 里面的 Console 里面输入:
tableau.extensions
Wow!!
Error
出错了!为什么呢?
因为在 Tableau Server上面我们可以看到,其实 Tableau 是用一个 iFrame 来装我们的扩展的,所以我们需要在左上角top 那个位置点选一下:
点选


2.2 扩展内容

当我们打开时,我们依次展开,对我们最关心的 Dashboard 内容进行查看:
内容
我们能惊奇的发现,这里是对应我们的:
我们
我们的内容都在这里了!!


2.3 worksheet 数据

我们要读取 worksheet 里面的内容怎么办?
我们看回我们刚打开的内容:

这里

打开这里可以看出我们在仪表盘里面的两个工作表内容,还有它的名字,我们想读取它的数据时,我们可以通过一个稍微复杂的语句:

tableau.extensions.dashboardContent.dashboard.worksheets.find(function(w) {
		if (w.name === "Income") { return true; }; 
	})
.getSummaryDataAsync().then(function(sumdata) {
	const worksheetData = sumdata;
	console.log(worksheetData);
});

这段代码的意思是需要读取 工作表 的名字为 “Income” 的数据内容。
( 因为 Tableau Server 的用户可能会有 IE 用户,所以不要写如 let ()=> 等 ES6 的语法 )
出来是什么呢?

内容
对应 “Income” 那个工作表的数据为:
信息源

关注我们读取信息里面的 Columns ,我们会发现,他们的 Columns 就是里面的所有行列以及数据标识均堆叠成一起。再让我们看Data 会清晰很多:

内容
可以看到,Tableau 工作表 里面每一个格子数据,在 Tableau 扩展 中都是根据行列来单独作为一个个体存在的。
好玩不!?


2.4 filter

同样在DebugerConsole里面运行:

wsLoveBerry = tableau.extensions.dashboardContent.dashboard.worksheets.find(function(w) { if (w.name === "Income") { return true; }; });
wsLoveBerry .getFiltersAsync().then(function (filtersForWorksheet) {console.log(filtersForWorksheet);});

我们可以看到:
filter
我们看到 Filter 里面有两个对象,这个就是我们在工作表上定义的数据了!
是不是很神奇?
通过读取他们现在 apply 的数据,我们可以得知现在的 过滤器 选择。
当然,可以获取!肯定可以修改的!

原本我们的Filter 是:
这个
但是当我们运行:

wsLoveBerry.applyFilterAsync("Staff",["爱美丽"],"replace", { isExcludeMode: false })

忽然变成:
改了
这不就改了嘛!


2.5 Parameter

这个是什么东西?

Para
只要我们运行参数

        tableau.extensions.dashboardContent.dashboard.getParametersAsync().then(function(paraPnL) {
            if (paraPnL) {
                paraPnL.forEach(function(elePara) {
                    console.log(elePara);
                });
            };
        });

就行了。
完了

3. 纯粹介绍

本文其实纯粹介绍,我们并没有任何太详细的说明原因是,我们是需要多点看 文档。
之后会继续说个实例的了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值