肆拾陆- Tableau Dashboard Extension 的绝望之旅 (一)_tableau dashboard permissions-程序员宅基地

技术标签: 三世书记录  tableau  可视化  js  html  

一。什么是 Tableau 扩展?

其实如果不知道什么是 Tableau 扩展应该也不会搜到这里来了,但循例我也应该介绍一下。
原文如下:
What is a Tableau Dashboard Extension

Tableau 扩展 本质来说其实在 Dashboard 里面插入一个网页,然后该网页可以通过 JS 文件与 Tableau 上的内容进行交互。
交互的方式可以是改变 Dashboard嵌套 Worksheet筛选器,修改参数等。

二。这个扩展与浏览器的扩展有啥不同?

Chrome 扩展为例, Chrome 扩展是一个后缀为 crx 的文件,而 Tableau 扩展是后缀为 trex 的文件。
以下为主要对比:

- Chrome 扩展 Tableau 扩展
插件文件后缀 crx trex
插件文件内容 包含 配置文件、Html、JS 文件的完整页面内容 只是一个配置文件
宿主 Chrome 浏览器 Tableau Desktop、Tableau Server
扩展API 多且自由 ( 如增加右键菜单 ) 少且很多限制

( 其实我想指出真正有意义只有第二点 )

三。Tableau 扩展文件内容

Tableau 扩展文件不包含任何内容的,只是一个描述文件内容可以参考:
Tableau Extension Manifest File

例子可以参考:

<?xml version="1.0" encoding="utf-8"?>
<manifest manifest-version="0.1" 
  xmlns="http://www.tableau.com/xml/extension_manifest">
  <dashboard-extension id="top.berrybc" extension-version="0.1.0">
    <default-locale>en_US</default-locale>
    <name resource-id="name"/>
    <description>Show Table</description>
    <author name="Berry Cui" email="[email protected]" organization="Berry" website="https://berrybc.top"/>
    <min-api-version>0.1</min-api-version>
    <source-location>
      <url>http://localhost/static/tableau/showtable/index.html?Love=Berry</url>
    </source-location>
    <icon>iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAYAAABxLuKEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAABuBSUR....</icon>
    <permissions>
      <permission>full data</permission>
    </permissions>
    <context-menu>
      <configure-context-menu-item />
    </context-menu>
  </dashboard-extension>
  <resources>
    <resource id="name">
      <text locale="en_US">Show Table</text>
    </resource>
  </resources>
</manifest>

这里必须说明有三点是十分重要的

1.<url>

Specifies the scheme (HTTPS, HTTTP), the name of the server, the port (optional) and the path to extension (optional). The url must use HTTPS. For example: https://example.com/extension. The exception is for localhost. In this case, HTTP is allowed. For example: http://localhost:8080.

意思是,除非你在本地测试 ( 必须为 localhost ,127.0.0.1 可不行 ),不然扩展的引用地址必须是 https ( 保证不被中间替换的安全措施哈~ )。

2.<icon>

If specified, the icon is what appears in the About dialog box. The icon must be a 70x70 pixel PNG file that is Base64 encoded. If you need an encoder, see https://www.base64-image.de/

意思是,其实这个 Icon 真的没啥意义,而且,想要用的话你还必须上那个网站把图片转化为字符串,再直接写在这里。

3.<permissions>

Declares the types of permissions that this extension requires. The only option is full data. If your extension can access the underlying data or information about the data sources, you must declare full data permission in the manifest. Full data permissions are required if you use any one of the following APIs: Worksheet.getUnderlyingDataAsync(), Datasource.getUnderlyingDataAsync(), Datasource.getActiveTablesAsync(), Datasource.getConnectionSummariesAsync(). If your extension does not use one of these APIs, you do not need include permissions element.

就是说这个设置有且只有一个配置值,就是 'full data' ,配置了这个值之后,你会发现这个扩展Tableau Server 上会被卡得很死 ( 需要配置白名单 ),超烦,而且配置只是为了获得底层数据 ( 直接访问数据源 ) ,我就觉得你直接访问数据源那就干脆写个网站算了呀,干嘛还加多一层 Tableau

4.<context-menu>

Tableau 扩展权限其实控制得很死,这是没办法的事情,选择菜单也只有这一项,详细可以看:
Add a Configuration Popup Dialog
( 其实我想说这一点不重要 )

四。Tableau 扩展的限制

1、 插件虽然是 Html + JS ,但…

首先需要明确一点,插件针对 Tableau Desktop 其实意义并不大,因为我们要实现复杂的功能的话,我们何不求助其余工具
所以只是针对 Tableau Server 上展示的 Dashboard 进行开发才是重点。
但问题来了,我们看过 Tableau Server 上的 Dashboard HTML 的话,会发现数据展示基本都是一个个 Canvas 画出来的,我们会以为如果用上插件之后,就真的会像一个网页一样。
但错了!我们用 EDGE 跟 IE 浏览器时,会发现里面的内容并不好像网页一样是可以选取的,只有用 Chrome 时才可以选取!

2、 Tableau 原生下载数据按钮并不对扩展生效

Tableau Server 上,我们有时候会选择"下载数据" 按钮来下载当前页面的 截图/PPT/PDF ,但针对插件,你是无法使用那个插件下载当前展示的内容。
就是说,原生Tableau 内容可以完全下载当前页面 截图/PPT/PDF ,但对 Tableau 扩展不生效的 ( 扩展中数据只会显示空白 )。

3、 扩展限制大

说白了,Tableau 就是一个比较封闭的数据展示系统,功能的确算是强大,可在中国这种前端工人遍地皆是,便宜且好用,花买 Tableau License 同样的钱我能请一堆好用的前端来开发可视化报表了。

五。后续我会从头到尾做一个 Tableau 扩展

好了,我睡了。
后续的东西后续算。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/BerryBC/article/details/107501565

智能推荐

Vue基于ElementUI的Dialog实现弹窗登录,登录成功前不允许关闭_dialog实现的登录-程序员宅基地

文章浏览阅读7.5k次。业务场景当页面比较单一,只是个单页面的时候。优点简单粗暴1.使用了session来记录登录是否成功,成功后不需要再登录;2.使用最简单的方式,可以写死用户,不需要有后台服务,当然也可以修改代码从后台校验用户登录;3.使用回调函数来强制用户不能点击空白处也不能关闭该登录窗口。缺点这里只是简单实现,不适合复杂业务场景代码新建一个vue组件,代码如下,把这个组件引入到你的页面,就会自..._dialog实现的登录

原生python实现knn分类算法(鸢尾花数据集)_原生python knn算法鸢尾花-程序员宅基地

文章浏览阅读2.1k次。一:作业题目原生python实现knn分类算法(鸢尾花数据集)二:算法设计Knn算法的核心思想:一个样本x与样本集中的k个最相邻的样本中的大多数属于某一个类别yLabel,那么该样本x也属于类别yLabel,并具有这个类别样本的特性。简而言之,一个样本与数据集中的k个最相邻样本中的大多数的类别相同。由其思想可以看出,KNN是通过测量不同特征值之间的距离进行分类,而且在决策样本类别时,只..._原生python knn算法鸢尾花

苹果手机上网很慢_iPhone xs max的4G网络很慢是怎么回事?应该怎么办?-程序员宅基地

文章浏览阅读1.3k次。手机上网信号很重要,信号的好坏体现在相同环境下,别人操作如流,你却在等页面缓冲。而最新近万元的iPhone XS MAX经常被消费者吐槽信号不行,网速很慢等问题。之所以iPhone XS MAX的4G网络很慢,其一是因为最新iPhone采用的英特尔基带XMM 7560技术不行,相比于高通的X20 LTE和华为的Cat.21还是存在差距的。其二,天线设计上也出现了问题。如今苹果也试图通过软..._iphonexs max手机的网络好慢

网络协议栈(一)_维克多协议栈-程序员宅基地

文章浏览阅读1.3k次。下面是参考了《Linux内核网络栈源代码情景分析.pdf》的协议栈的一个分层描述_维克多协议栈

Linux:让内存不再泄漏_linux屏蔽坏内存-程序员宅基地

文章浏览阅读6k次。Linux:让内存不再泄漏本文将介绍内存泄漏的检测方法以及现在可以使用的工具。针对内存泄漏的问题,本文提供足够的信息,使我们能够在不同的工具中做出选择。       内存泄漏      在此,谈论的是程序设计中内存泄漏和错误的问题,不过,并不是所有的程序都有这一问题。首先,泄漏等一些内存方面的问题在有的程序语言中是不容易发生的。这些程序语言一般都认为内存管理太重要了,所以不能由程序员来处理,最_linux屏蔽坏内存

随便推点

unity中地形Terrain明显闪烁的解决办法_unity 草和地形 闪烁-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏7次。新人们经常会遇到一个问题,有时候unity中地形Terrain与其它模型的mesh有重叠的地方会出现明显闪烁。研究了一下,Clipping Planes的取值会严重影响unity自带地形Terrain的渲染,Near值越小,Terrain与其它模型交接面的闪烁现象就越严重。这可能是一个BUG,以后Near值建议取0.9以上。_unity 草和地形 闪烁

无人车系统(四):轨迹跟踪PID控制_tracking pid 循迹追踪-程序员宅基地

文章浏览阅读4.9w次,点赞97次,收藏654次。本篇介绍如何利用PID控制实现无人车轨迹跟踪。1. 横向跟踪误差横向跟踪误差(cross track error, 简称CTE)为前轴中心点(rx,ry)(r_x, r_y)(rx​,ry​)到最近路径点(px,py)(p_x, p_y)(px​,py​)的距离,具体如下图所示。以上图为基础进行简略分析,如果参考轨迹点在无人车的左边θe∈[0,π]\theta_{e}\in [0, \......_tracking pid 循迹追踪

整体可拖动窗口_如何拖动整个窗口-程序员宅基地

文章浏览阅读927次。功能实现:窗口分为由操作系统管理的非用户区(Non-Client Area)和默认子窗口不能拖动的客户区(Client Area)。通常情况只能通过点击标题栏即非用户区拖动窗口。此程序实现整个窗口任意位置的拖动。代码实现:1.声明成员变量:bool m_dragging; //“是否拖动”状态变量QPoint m_mousestart; // 鼠标自左键点击开始移动的初始位置QP..._如何拖动整个窗口

lcx端口转发-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏9次。lcx端口转发:本文主要通过讲解lcx的本地端口及远程端口转发,让能熟练使用lcx端口转发工具,对端口转发知识有更加深入了解,本次实验靶场来源于暗月(moonsec)师傅,本文内容全由本人通过学习理解编制,文中若有错处,大佬勿喷,个人学艺不精;所以想学习更多的渗透知识请找暗月师傅。描述:lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口。它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入侵工具,lcx在_lcx端口转发

程序员必知必会10大基础算法_python基础算法-程序员宅基地

文章浏览阅读534次。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divideandconquer)策略来把一个串行(list..._python基础算法

通过jmeter完成对请求字段的加密_jmeter 加密请求-程序员宅基地

文章浏览阅读808次。前言相信大家在工作中做接口测试的时候,肯定会遇到一个场景,那就是你们的软件,密码是加密存储的。。那么这样的话,我们在执行接口的时候,对于密码的处理就开始头疼了。。所以,本文将使用 jmeter 这款 Java 开源的接口测试工具,给大家来讲解 jmeter 完成加密的接口请求先导知识在执行加密之前,你需要了解 3 个知识点:元件-> 前置/后置处理器 beanshell 是什么 beanshell 的内置变量元件-> 前置/后置处理器前置处理器:此元件突出一个“前”_jmeter 加密请求

推荐文章

热门文章

相关标签