2024 年 11 月 9 日,Alex Garcia 和作者主持了首次Datasette 公开办公时间。这是一个直播视频会话,他们一起处理一个项目,并在 Discord 上接受社区成员的问题和建议。
- 未录制本次活动(令人惊讶的是,Discord 未提供此功能),但希望未来能多举办并录制。
此篇文章详细记录了会话期间构建的内容:
- 圣马特奥县选举结果:作者住在加利福尼亚州圣马特奥县半月湾以北的埃尔格拉纳达,该县以不同方式处理和发布选举结果,结果发布在此页面,详细的每个选区和每个候选人的细分以 CSV 文件形式提供。作者还设置了Git 爬虫,但发现 CSV 每天仅更新一次,而非随着选票计数不断更新。作者特别关注格拉纳达社区服务区董事会成员选举的结果。
- 将 CSV 数据导入 Datasette:作者使用Datasette Cloud导入 CSV 数据到新表。
- 修改架构:导入的表中 CSV 的所有列仍被视为文本,使用datasette-edit-schema 插件将相关列切换为整数,以便进行求和和排序。
- 对表进行分面和过滤:作者对感兴趣的格拉纳达社区服务区选举应用分面,选择特定比赛,并应用其他分面,如“候选人姓名”和“选区名称”。
- 导入地理空间选区形状:圣马特奥县以 23 个 PDF 文件形式提供选区地图,作者添加新表导入地理空间数据,使用datasette-import 插件和datasette-leaflet-geojson 插件在地图上绘制选区形状,还使用 Datasette 的丰富功能添加新的“precinct_id”列。
- 运行连接:作者使用 Datasette SQL 查询编辑器在选举结果和选区表之间运行连接查询。
- 创建访问数据的 API 令牌:为在 Observable 中构建自定义可视化,需要创建 API 令牌,使用datasette-auth-tokens 插件创建只读访问令牌。
- 使 CORS 工作:忘记需要 CORS 头才能从 Observable 笔记本访问数据,安装datasette-cors 插件以授予访问权限。
- 在 Observable 中使用 Datasette:Alex 从客户端 JavaScript 运行 SQL 查询以获取特定选举的数据,并将数据导入 Observable,使用 Observable Plot 图表库渲染选区形状。
- 使用 MapLibre GL 可视化:Alex 使用MapLibre GL和OpenFreeMap 3D 瓦片进行可视化。
- Observable Plot:Observable 笔记本预加载了 Observable Plot 图表库,用于可视化数据。
- 整合所有内容:Alex 结合之前所学构建一个交互式地图,允许用户选择选票上的任何比赛,并查看所选候选人的结果热图。
未来计划:
- 录制这些会话并在 YouTube 上提供,供无法实时参加的人观看。
- 混合格式,让更多人参与演示,可能设置 5 - 10 分钟的闪电演示时段,展示其他人的工作。
- 关注博客或Datasette Discord获取未来会话的消息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。