用途
Harvard Artifacts Collection Analytics ETL 面向的是数据工程与数据分析场景,目标是为哈佛艺术博物馆 API 提供一套端到端的数据解决方案。项目以示例工程的形式展示如何将外部 API 的藏品数据转化为可查询、可分析的关系型数据,并通过可视化仪表盘呈现结果。其架构流程为:API → ETL → SQL → Analytics → Visualization。项目由 ara.so 提供,属于 Data Skills 集合中的一项技能。
主要能力
数据提取:从哈佛艺术博物馆 API(https://api.harvardartmuseums.org/object)分页提取藏品数据,单页最大 100 条,按目标数量循环获取。
数据变换:将嵌套 JSON 转换为关系型数据帧,拆分为元数据、媒体与颜色三类记录。元数据字段包括标题、文化、世纪、分类、部门、年代、描述、分部、材质、时期、技法与 URL,并对字符串字段做长度截断;媒体字段包括 baseimageurl、iiifbaseuri、primaryimageurl;颜色字段包括颜色值与占比百分比。
数据加载:批量写入 SQL 数据库(MySQL/TiDB),元数据插入使用 ON DUPLICATE KEY UPDATE 处理主键冲突,支持事务提交与回滚,并在出错时打印加载错误。
数据库模式:创建三张关系表。artifactmetadata 以 artifact_id 为主键存储藏品元数据;artifactmedia 以自增 media_id 为主键、artifact_id 为外键存储图片相关字段;artifactcolors 以自增 color_id 为主键、artifact_id 为外键存储颜色与百分比。
分析查询:内置多组预定义 SQL 查询,包括按文化统计藏品数量、按世纪统计、有图/无图分布、最常用颜色及其平均占比、部门分布、分类概览等,结果以 DataFrame 返回。
可视化:Streamlit 应用提供侧边栏 ETL 操作入口(可设置采集数量并运行流水线)与分析仪表盘(选择查询、查看数据表),当结果恰为两列时自动用 Plotly Express 生成柱状图展示。
使用方式
安装步骤为:克隆仓库 https://github.com/Manali0711/Harvard-Artifacts-Collection-Data-Engineering-Analytics-App.git,进入目录后执行 pip install -r requirements.txt,并设置环境变量 HARVARD_API_KEY、DB_HOST、DB_USER、DB_PASSWORD、DB_NAME。所需依赖包为 streamlit、pandas、requests、mysql-connector-python、plotly、python-dotenv。
项目结构包含 app.py(Streamlit 主应用)、etl_pipeline.py(提取与变换的 ETL 逻辑)、database_setup.py(SQL 模式与连接管理)、analytics_queries.py(预定义 SQL 分析查询)、config.py(配置与环境变量)以及 requirements.txt。
运行方式为执行 streamlit run app.py,随后访问 http://localhost:8501。在界面中可于侧边栏设定要采集的藏品数量(最小 10,最大 1000,默认 100),运行 ETL 流水线,再到分析区选择查询并运行分析。
适用场景
适合学习或演示数据工程全流程的实践,包括 API 抽取、嵌套 JSON 到关系表的建模、批量装载 SQL、SQL 分析与可视化联动。也适用于为艺术藏品数据搭建原型级分析看板。
限制
项目依赖哈佛艺术博物馆 API 密钥与外部数据库,相关凭据需自行提供,密钥获取入口见 https://docs.harvardartmuseums.org/。API 存在分页上限(单页 100 条),示例中提供限流处理以避免 API 被限流。大规模数据可能产生内存问题,代码示例给出按批处理(如 batch_size=1000)的思路。若查询结果为空,需检查 ETL 是否已运行以及表中是否存在数据。文档中暂未提供关于收费、价格、许可、运行平台与性能指标的说明。