用 Google Sheets 表格增强 Tableau 数据分析的 3 种玩法

轻松实现文本翻译、网页数据抓取,甚至创建高级日期表来增强 Tableau 可视化效果!

作为一款强大的数据可视化工具,Tableau 的可视化能力毋庸置疑。然而,对于跟表格打交道的用户来说,它没有“创建表格”的功能,即在数据源端直接生成或输入数据的能力。

因此,如果你有这样的需求,可以将 Google Sheets 用作补充工具,再与 Tableau 仪表板进行无缝结合。

为了验证 1+1 是否 > 2,今天我们就来探索数据粉 Matthias Giger 分享的一些用例,看看如何用 Google Sheets 增强 Tableau 分析!话不多说,马上开始吧~

Tableau + Google Sheets = ?

作为最受欢迎的电子表格工具之一,Google Sheets 就是线上版的 Excel。在早期版本中,Tableau 提供了直连至 Google Sheets 的连接器,可助你轻松分析实时数据。

2023.1 版本后,Tableau 虽然停用了 Google Sheets 连接器,但依然支持连接到 Google Drive 云端硬盘,以便用户灵活分析云端数据表格。

比如,当用 Google Forms 进行问卷调查时,你可将表单数据存储在 Google Sheets 中,再通过 Tableau 进行可视化分析。这种方法非常适合希望在网站上公示数据的场景,且无需编写代码。

当然了,Google Sheets 的功能绝对不仅于此。接下来,我们就来探索 3 种玩法,看看它如何帮助你增强 Tableau 数据分析。

01 快速实现多语言翻译

在 Google Sheets 中,借助 GOOGLETRANSLATE() 函数,你可以轻松将文本值翻译成多种语言,以便将 Tableau 问卷分析仪表板中的问题、答案或其他内容转化为多语言版本。

假设,我们需将表格中的“Hello World”文本值翻译成多种语言。如何实现呢?只需在 Google Sheets 中使用以下公式,即可创建一个翻译表:=GOOGLETRANSLATE(A2, B2,C2)

A2:需要翻译的值的单元格

B2:原语言代码,这里为“EN”,即英语

C2:目标语言代码,比如:“ZH”表示中文

这么做有啥好处呢?之前有数据粉咨询过类似需求,但 Tableau 不支持直接翻译。

借助这种方法,你就可以对问卷的问题、答案或文本数据进行实时翻译,然后将包含翻译结果的 Google 表格连接至 Tableau ,并使用参数操作为不同地区的报表用户显示不同语言的仪表板,实现更个性化的用数体验。

02 用 Google Sheets 抓取网页数据

Google Sheets 的另一个强大功能是通过 IMPORTHTML() 函数从网页抓取数据,对于提取外部数据并丰富 Tableau 可视化内容非常有用。

假设,我们想从百度百科页面获取巴黎奥运会数据。只需打开 Google Sheets ,任意选择一个单元格输入公式:

=IMPORTHTML("https://baike.baidu.com/item/2024%E5%B9%B4%E5%B7%B4%E9%BB%8E%E5%A5%A5%E8%BF%90%E4%BC%9A/17619118?fr=ge_ala", "table", 1)

URL:数据所在的网页地址

table:表示你想从 HTML 表格中提取数据

1:指的是网页上的第一个表格。如果有多个表格,可更改数字进行抓取

如视频所示,你不需要专门学习或花很多时间进行爬虫,就能快速、自动化地从网页中采集结构化数据,既能节省时间又能解放双手。

此外,通过将最新的网页数据整合到分析中,你可以进一步丰富数据与可视化,并做出更准确、及时的决策。例如,在 Tableau 仪表板中调用 Google Sheets 中最新的统计数据。

03 用 Apps Script 创建高级日期表

此外,Google Sheets 中还支持通过 Google Apps Script 实现高级功能。例如,生成一张日期维度表,以便在分析不同日期类型(如项目里程碑、截止日期)时提供便利。

举个例子,在项目管理中,你可能需要比较实际日期与截止日期,或将多个日期(如开始、里程碑、结束日期)绘制在同一条时间轴上。借助专用的日期表,我们可以独立呈现这些日期,且不依赖事实表中的日期结构。

具体步骤如下:

首先,打开一个新的或现有的 Google Sheets 表格,点击菜单栏中的“扩展程序”- “Apps 脚本”,打开 Google Apps Script 编辑器。

在 Apps Script 编辑器中,你会看到一个默认的 Code.gs 文件。然后,直接复制以下用于创建日期表的完整代码到 Google Sheets 的 Apps 脚本编辑器中,覆盖默认内容。

PS:代码设置的日期范围是 2020 年 1 月 1 日到 2030 年 12 月 31 日。你可以在代码中的 startDate 和 endDate 变量中调整这个范围。

function createDateTable() {

// 定义起始和结束日期

var startDate = new Date(2020, 0, 1); // 一月在 JavaScript 中是 0

var endDate = new Date(2030, 11, 31); // 十二月在 JavaScript 中是 11

// 计算起始和结束日期之间的天数

var dayCount = (endDate - startDate) / (1000 * 60 * 60 * 24) + 1;

// 获取活动表格

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

// 设置标题行

var headers = ["Date", "Year", "Month", "Month Name", "Quarter", "Week Number", "Day", "Day of Week", "Day Name", "Is Weekend", "Start of Week", "End of Week", "Start of Month", "End of Month", "Start of Quarter", "End of Quarter", "Start of Year", "End of Year", "European Date", "DateKey"];

sheet.appendRow(headers);

// 生成日期表

for (var i = 0; i < dayCount; i++) {

var currentDate = new Date(startDate);

currentDate.setDate(startDate.getDate() + i);

var year = currentDate.getFullYear();

var month = currentDate.getMonth() + 1; // 一月在 JavaScript 中是 0

var monthName = currentDate.toLocaleString('default', { month: 'long' });

var quarter = Math.floor((currentDate.getMonth() + 3) / 3);

var weekNumber = getWeekNumber(currentDate);

var day = currentDate.getDate();

var dayOfWeek = currentDate.getDay();

var dayName = currentDate.toLocaleString('default', { weekday: 'long' });

var isWeekend = dayOfWeek == 0 || dayOfWeek == 6;

var startOfWeek = new Date(currentDate);

startOfWeek.setDate(currentDate.getDate() - dayOfWeek + 1); // 周一为一周的开始

var endOfWeek = new Date(startOfWeek);

endOfWeek.setDate(startOfWeek.getDate() + 6);

var startOfMonth = new Date(year, currentDate.getMonth(), 1);

var endOfMonth = new Date(year, currentDate.getMonth() + 1, 0);

var startOfQuarter = new Date(year, (quarter - 1) * 3, 1);

var endOfQuarter = new Date(year, quarter * 3, 0);

var startOfYear = new Date(year, 0, 1);

var endOfYear = new Date(year, 11, 31);

var europeanDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), 'dd/MM/yyyy');

var dateKey = year * 10000 + month * 100 + day;

var row = [currentDate, year, month, monthName, quarter, weekNumber, day, dayOfWeek, dayName, isWeekend, startOfWeek, endOfWeek, startOfMonth, endOfMonth, startOfQuarter, endOfQuarter, startOfYear, endOfYear, europeanDate, dateKey];

sheet.appendRow(row);

}

}

function getWeekNumber(date) {

var start = new Date(date.getFullYear(), 0, 1);

var days = Math.floor((date - start) / (24 * 60 * 60 * 1000));

var weekNumber = Math.ceil((days + start.getDay() + 1) / 7);

return weekNumber;

}

点击“保存”按钮,为项目命名(如“日期表生成器”)。然后,点击“运行”-“createDateTable”,此时会弹出授权请求,按提示选择你的 Google 账户并授予权限。

成功授权后,再次点击“运行” - “createDateTable”。代码开始执行,并在当前 Google Sheets 表格的第一个工作表中生成日期表。

PS:如果生成的数据过多导致执行超时,可以重新运行代码,并调整 startDate 以跳过已完成的部分,继续生成剩余数据。

代码执行过程中,Google Sheets 会生成一张全新的日期表,包含以下信息:

Date:具体日期

Year:年份

Month:月份(数字格式)

Month Name:月份名称(英文)

Quarter:季度

Week Number:周数

Day:日期中的“日”部分

Day of Week:星期几(数字格式,0 表示星期天,6 表示星期六)

Day Name:星期几的名称(英文)

Is Weekend:是否为周末(布尔值)

Start of Week / End of Week:每周的开始和结束日期

Start of Month / End of Month:每月的开始和结束日期

Start of Quarter / End of Quarter:每季度的开始和结束日期

Start of Year / End of Year:每年的开始和结束日期

European Date:欧洲日期格式(dd/MM/yyyy)

DateKey:日期键,用于在 Tableau 等 BI 工具中进行数据关联

如此,你就可以将这个完整日期表用于 Tableau 时间序列分析。PS:可将结果复制到新表或在 Tableau 中使用 UNION 函数进行合并。

正如上文所述,通过结合 Google Sheets 与 Tableau ,你就可以轻松实现文本翻译、网页数据抓取,甚至创建高级日期表来增强 Tableau 可视化效果啦~

无论你是想翻译问卷分析、收集最新的网页数据,还是创建时间轴,Google Sheets 都能提供强大灵活的工具,助你将 Tableau 仪表板变成动态、多语言、数据丰富的可视化作品。

👉 心动不如马上行动!立即打开你的 Google Sheets 试试看吧~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容