Tabular & Summary Report Fact Map Examples

DEX455 - Reports API、Sites、Support Classes 与 Territory Management

📄 第 339 页 🎬 视频课程

课程章节介绍

同学们,咱们今天来看一个比较细节但也特别实用的知识点:,怎么在 Apex 里读懂报表的事实数据键,尤其是分组报表那些奇怪的字符串到底是什么意思,。 你可能已经写过程序去跑报表,用 `Reports.ReportManager` 拿到 `ReportResult`,然后调用它的 `getFactMap()`。这个方法返回一个 Map,键是字符串,值就是汇总数据。不同的报表类型,这个键长得完全不一样,所以咱们得搞清楚命名规则。 先看最简单的:,表格式报表,,也就是没有任何分组,数据一行行打出来的那种。因为没分组,所有数据的汇总就只有一个层级——总计。在事实 Map 里,那条唯一的键就写作 `"T!T"`。注意,前面的“T”代表整个报表的总计行,感叹号后面的“T”是汇总字段的默认别名,一般来说金额、数量这类数值汇总的别名默认就是“T”。所以看到 `"T!T"`,你就知道这是整张报表唯一的一个总计块。 好,下面重点来了:,摘要报表,,有分组的那种。这时候每个分组级别都会在键里体现出来,而且索引从 0 开始。 比如只有一个分组级别,比如按“地区”分组看销售额。钥匙的格式就是 `"分组索引!T"`。给你举例,`"0!T"` 就是第一个分组值(索引0)下的总计。如果地区有“北美”“欧洲”,那 `"0!T"` 对应“北美”的汇总,`"1!T"` 对应“欧洲”的汇总。 如果有两个分组级别,键就再复杂一点。它会把各级分组的索引用下划线连起来。比如先按“地区”分,再在地区下面按“产品线”分。那么 `"1_0!T"` 是什么意思呢?我们一看:第一个数字“1”是第一个分组(地区)的索引,索引1就是第二个地区;下划线后的“0”是第二个分组(产品线)的索引,0代表该地区下的第一个产品线;最后的 `!T` 还是指汇总值别名。所以整把钥匙锁定的是:,第二个地区下面第一个产品线组合的总计数据,。 你可以把这个规则总结成:,键 = 一级分组索引_二级分组索引_... ! 聚合字段别名,。有多少级分组就拼多少级索引,用下划线隔开。每个数字都从0开始数,很简单对吧。 知道了键,接下来值也很重要。事实 Map 里的值有两种类型: - 如果报表只展示汇总信息,比如摘要报表里没有勾选“展示明细”,那这些条目就是 ,ReportFact,。你可以用 `getAggregates()` 拿到一个汇总数值数组,配合 `ReportResult` 的元数据,就能知道每个值对应哪个字段。 - 如果是包含明细行的报表,Map 里的值可能变成 ,ReportFactWithDetails,。它除了包含 `ReportFact` 的汇总功能,还能用 `getRows()` 拉出具体的明细记录列表

关键词

Apex Salesforce Developer Guide