如何在Obsidian Dataview中实现分组计数并显示总计?
Obsidian Dataview实现按后缀分组计数及总计
这个需求完全可行,用Dataview就能搞定,甚至能完美实现你要的总计功能:
仅分组计数(纯Dataview查询)
如果只需要分组计数,用下面的代码即可生成带后缀和对应数量的表格:
TABLE length(rows) AS 计数 FROM "" WHERE file.name contains " PA" OR file.name contains " TS" OR file.name contains " FB" GROUP BY regexreplace(file.name, "^.* (PA|TS|FB)$", "$1") AS 后缀 SORT 后缀 ASC
包含总计(DataviewJS实现)
要加上总计行,需要用DataviewJS编写逻辑,代码如下:
// 筛选目标笔记并按后缀分组 const targetGroups = dv.pages() .filter(page => page.file.name.includes(" PA") || page.file.name.includes(" TS") || page.file.name.includes(" FB")) .groupBy(page => /^.* (PA|TS|FB)$/.exec(page.file.name)[1]); // 计算所有笔记的总数量 const totalCount = targetGroups.reduce((sum, group) => sum + group.rows.length, 0); // 构建表格数据,最后追加总计行 const tableContent = targetGroups.map(group => [group.key, group.rows.length]); tableContent.push(["Total", totalCount]); // 渲染表格 dv.table(["后缀", "计数"], tableContent);
把代码复制到Obsidian笔记中,切换到阅读模式就能看到符合要求的汇总表。
内容的提问来源于stack exchange,提问作者HPB
相关产品推荐
相关产品推荐

