随着数据分析的不断积累与深入,如何高效处理和分析大规模数据,成为了分析师需要学习与掌握的技能。
那么,哪些算是大规模数据?比如,IMDb Movie 与 TV 主题数据集。
IMDb 数据集的意义不仅在于体量(超过 1GB),还因为它包含丰富的多维度影视信息,如影视标题、演员、类型和制作公司等,是一个复杂却极具价值的练习数据集。
因此,它连续两年成为 Tableau 社区的热点话题。不仅被指定为 Tableau Iron Viz 学生版竞赛数据源,还将登上 TC25 大会的 Iron Viz 决赛舞台,为全球数据分析爱好者提供展示能力的机会。
但随之而来的问题是,如何利用强大的工具进行高效处理、压缩冗余数据,同时确保数据分析的性能?
今天,就让我们通过 Tableau 社区成员 David Kelly 的实践分享,了解如何利用 Tableau 完成从数据模型设计到数据处理、清洗、优化的过程,并将 IMDb “Movies” 数据从 1.09GB 成功压缩到 219MB,从而为想要练手的数据粉提供更多解决思路。
初面挑战:从数据冗余到高效压缩
“Data+Movies” 是 2023 年 Tableau 与 IMDb 联合发起的一项可视化挑战,其数据复杂性在于多维度的数据结构和显著冗余的数据。每一部电影都涉及演员、类型、制作公司等多方面信息,并且数据的时间跨度很大。
在仔细探索上图所示的入门仪表板后,David 发现这些信息经常存储在同一表格中,导致数据内容重复和文件过大。归根结底,是数据库设计的问题使得数据处理效率低下。但同时,这也成为了优化的切入点。
为此,David 制定了一个计划,想要通过四个步骤来处理这份数据:
确定重复数据
构建规范的数据模型
从 Tableau 入门仪表板中提取数据
将其导入 Tableau Prep
梳理模型蓝图,重塑数据结构
首先,David 列出了每一个数据元素,并对其进行评估。然后,通过设计一个更标准的模型来应对挑战。他将数据归纳为以下几类:
核心主表:如 Title.csv,存储电影的基本信息(如标题、年份、简介等)。
独立维度表:如 Genre.csv(电影类型)、Person.csv(演员和导演)和 ProductionCompany.csv(制作公司)。
关联表:如 TitleGenreLookup.csv,用于记录电影与类型、演员之间的多对多关系。
这种设计避免了重复信息堆叠,提高了数据管理和查询的灵活性。优势在于每个表格专注于展示一个维度,降低了数据冗余,同时增强了数据模型的可扩展性。
在提取数据时,通过解压 “Data+Movies”入门仪表板(.twbx) ,David 找到了以 Hyper 格式存储的数据源。虽然文件大小有 2.5GB,比原始文件(1.09GB)看似更大,但它实际上已经被压缩了 2.5 倍,这为后续的数据清洗和分析打下了基础。
动手实践:Prep 全流程数据处理
经过 14 个数据准备流程的试错与迭代,David 最终在 Tableau Prep 中建立了一个完整的工作流程,从数据清洗、转换到最终输出,每一步都精确展示了工具的强大功能。
接下来,我们逐一结构这个过程。
01 数据清洗与聚合:剔除重复数据
聚合操作是数据清洗的关键步骤之一。
在初始模型设计中,David 确定了需要优化的数据维度,包括标题、人物、类型和制作公司。然后,通过 Tableau Prep 的聚合与清理步骤,处理了数据中的空值和重复项。
下图展示了对 ProductionCompany(制作公司)字段的清洗过程:
空值被替换为“Missing Information”;
使用公式对字段内容进行格式化处理;
最终,通过过滤和移除无用字段,完成了字段的标准化操作。
02 拆分与转置:处理多值字段
对于原始数据中的多值字段(如电影类型和演员信息),David 使用了“拆分”和“转置”操作,将宽表结构转化为更高效的长表格式。这种转换方式不仅简化了数据结构,还确保了每个维度数据的完整性和独立性,使每种类型都可用于后续可视化分析。
上图展示了 David 对字段的转置处理:
将嵌套的数组字段(如包含多个电影类型的字段)拆分为单独的列;
使用“转置”步骤将拆分后的字段转化为多行,每行仅记录一个类型。这种方法有效避免了筛选和查询时可能遗漏数据的风险;
清理冗余字段,确保数据的简洁性和一致性。
03 创建唯一标识:构建表之间的关系
在数据库中,主键是数据集内自然出现的唯一标识符(ID)。IMDb “Movies” 数据集有两个字段具备唯一的 ID:Person 和 Title。为了让拆分后的数据表能够有效关联,David 为每个表生成了唯一 ID,通过这些 ID 在表与表之间建立了准确的映射关系。
上图展示了 ProductionCompany ID 的生成过程。这些 ID 没有实际业务意义,仅用于表与表之间关系的管理和查询。
在 Tableau Prep 中创建计算,通过公式为每个制作公司生成唯一的数字 ID。其中,ROW_NUMBER() 可创建一个整数值,以便公司列表按字母顺序排列。
将字段重命名为 PK.ProductionCompanyID,明确其作为标识符的作用。
04 数据整合与模型优化
在数据处理的最后阶段,David 通过 Tableau Prep 的工作流整合功能,将清洗后的各个维度表格组合为完整的数据模型。这一过程包含:
根据之前生成的唯一标识,在核心主表与独立维度表之间建立多对多关联(如 Title.csv 与 Genre.csv 的关系);
验证表间关系的准确性,确保引用字段没有空值或重复项;
将最终数据模型输出到 Tableau Desktop,以便后续可视化和分析。
在整个整合过程中,Tableau Prep 提供了清晰的可视化流程,便于随时检查和调整操作逻辑,确保每一步都符合预期。
05 数据模型的最终形态
最后,David 将 Prep 清洗后的数据导出,并在 Desktop 中构建了一个以 Title.csv 为主表的关系模型。
主表记录主要信息:Title.csv 包含电影的基础信息(如标题、年份)。
维度表独立存储属性:每个维度表(如 Genre.csv)独立存储对应的属性信息。
关联表连接数据:如 TitleGenreLookup.csv 表,用于多对多高效关联不同维度。
如此,就可以在 Tableau 中直接调用数据,并通过数据源管理界面轻松调整关联关系。
通过这一系列操作,David 成功将数据集从 1.09GB 压缩到 219MB,并显著提高了数据的可用性和分析性能。总的来看,这个实践案例不仅展示了如何处理复杂的 IMDb 数据,还为其他业务场景提供了借鉴意义。
如果你正在寻找一种工具,以高效处理大规模数据集并实现清洗、建模和优化,那么 Tableau Prep 是一个不错的选择。点击此处,免费试用 Tableau 吧!