[Day24] Tableau 轻松学 - TabPy 使用方法 1

前言

简单来说,Python 在 Tableau Desktop 中使用方法有两种,第一种是将 TabPy 当作 Python 直译器,将 Python 程序码直接写在 Tableau Desktop 中,需要运算时再将该程序码传送给 TabPy 执行。第二种是预先写好函式,将其存放於 TabPy Server,Tableau 要呼叫时只需指定函式名称与传递资料即可。这里会分享如何使用第一种方式,将 Python 整合进 Tableau Desktop 使用。

使用方法

Sample - Superstore 为资料来源,开启一个全新的工作簿,我们将会建立四个 Calculated Field 分别使用 SCRIPT_BOOLSCRIPT_INTSCRIPT_REALSCRIPT_STR 四个函式来示范如何在 Tableau Desktop 中使用 Python。

这四个函式的参数格式都相同 (string, expression, ...),第一个参数为 Python 程序码,第二个与之後的参数都为所要传递的资料。TabPy 预设以 _arg# 变数名称来存取 Tableau 传递来的资料,# 代表从 1 开始的数字,数字依资料所在的参数位置而定。所有传递的资料在 TabPy 中都会以 List 的型态存在,因此所有的 _arg# 都为 List 物件

SCRIPT_BOOL

建立一个名为 销售额大於10000 的 Calculated Field 且其函式如下,意思是若销售额 SUM([Sales]) 大於 10000,对应的回传值会是 True,反之为 FalseSUM([Sales]) 为第 1 个资料参数,因此若想在 Python 程序中存取则是使用 _arg1 变数名

SCRIPT_BOOL("return [x > 10000 for x in _arg1]", SUM([Sales]))

SCRIPT_INT

建立一个名为 2倍销售额 的 Calculated Field 且其函式如下,意思是在 Python 中先将资料各别乘以 2 再取整数回传

SCRIPT_INT("return [int(x * 2) for x in _arg1]", SUM(Sales))

SCRIPT_REAL

建立一个名为 销售额平方根 的 Calculated Field 且其函式如下,意思是在 Python 中先将 math 套件 import 进来,再将资料各别取根号值回传

SCRIPT_REAL("import math
return [math.sqrt(x) for x in _arg1]", SUM([Sales]))

SCRIPT_STR

建立一个名为 销售额说明 的 Calculated Field 且其函式如下,这里传入两种资料分别为销售额 SUM([Sales]) 与州名 ATTR([State]),在 Python 中要存取销售额是使用 _arg1,而存取州名是使用 _arg2 变数名称,因为它是第 2 个传入的资料参数

SCRIPT_STR("
return [f'{x[1]} 的销售额为 {int(x[0])}' for x in zip(_arg1, _arg2)]
", SUM([Sales]), ATTR([State]))

显示

State销售额大於10000销售额说明 拖曳到 Rows,Sales2倍销售额销售额平方根 拖曳到 Columns,简单地人工肉眼验证是否运算正确

TabPy 运算结果视觉化

结语

透过简单的例子示范如何将 Python 写在 Tableau Desktop 之中并获得回传值,让读者有办法运用这四个函式创造出自己的计算方法。这种使用方式很直接,因为程序码是嵌在工作簿内的,但这种作法也有缺点,若其他工作簿也需要使用该程序码,就必须复制同一份程序码至不同的工作簿中,最後变得难以管理。

工作簿原始档案

完成的工作簿

在实作中遇到困难是难免的,这里提供原始档作为参考,若仍然无法解决欢迎至下方讨论区留言。


<<:  Day 10 - Design System x 实作 — Icon 元件

>>:  Day10 用python写UI-聊聊文字方块Entry

[Day 5] Ktor 微框架就如同一间毛胚屋,先来列出想要整合的框架及实作的功能清单

Ktor 的架构设计及开发风格是我所喜欢的,但相对地使用 Ktor 开发也要付出代价。因为 Ktor...

多国语系魔术

今天要来介绍多国语系的处理,想要建立一个国际化网站,多国语系可以说是基本需求,那我们就来看如何在 B...

Day2 - P5基本操作 - 基本设定跟操作

其实为什麽P5这麽多人喜爱 阅读性真的很高,举例来讲好了 一个基本的设定 首先你先设定 setup ...

企划实现(30)

止损 止损顾名思义就是停止损失,今天在做企划的同时,世界并不会停下来等你发展,所以如果在做企划的同时...

【Day19-颜色】眼前的黑不是黑,你说的白是什麽白?——浅谈图片资料的色彩空间

在经过了文字和声音的章节,今天终於到了图片的进度 我们会从人类对视觉的认知方式出发,以及谈一下那些不...