分析¶
分析模块提供某种本地分析数据,即基于存储在设备中的数据的一些分析值。目前,没有与服务器分析集成,尽管它们共享基本概念,如可视化、相对周期、相对 orgunits 等。
聚合分析¶
它们以聚合方式显示分析值。值可能来自聚合数据或跟踪器数据。如果您熟悉 Web 分析工具,则此模块与数据可视化工具(表格、图表等)非常相似。
原始分析¶
此模块遵循与 Web API 中的分析端点类似的概念。它们是必须提供给分析引擎以执行评估的两个基本参数:维度和过滤器。
例如,获取过去 3 个月 (RelativePeriod) 中“ANC 第一次访问”(数据元素“fbfJHSPpUQD”)的数量并由组织单位“Ngelehun CHC”(绝对组织单位“DiszpKrYNg8”)过滤的基本查询就像这:
d2.analyticsModule().analytics()
.withDimension(new DimensionItem.DataItem.DataElementItem("fbfJHSPpUQD"))
.withDimension(新 DimensionItem.PeriodItem.Relative(RelativePeriod.LAST_3_MONTHS))
.withFilter(new DimensionItem.OrganisationUnitItem.Absolute("DiszpKrYNg8"))
。评价();
引擎将返回一个包含DimensionalResponse或AnalyticsException的Result对象。让我们看一下DimensionalResponse的结构。为方便起见,我们使用 Kotlin 表示,但 Java 表示非常相似:
``kt DimensionalResponse( metadata = mapOf( "fbfJHSPpUQD" to MetadataItem.DataElementItem、 "DiszpKrYNg8" 到 MetadataItem.OrganisationUnitItem、 将 "202108 "转至 MetadataItem.PeriodItem、 "202109" 转至 MetadataItem.PeriodItem、 将 "202110 "更改为 MetadataItem.PeriodItem。 ), dimensions = listOf( 维度.数据.周期 维度.周期 ), dimensionItems = mapOf( Dimension.Data to listOf( DimensionItem.DataItem.DataElementItem(uid=fbfJHSPpUQD) ), Dimension.Period 至 listOf( DimensionItem.PeriodItem.Relative(relative=RelativePeriod.LAST_3_MONTHS) ), Dimension.OrganisationUnit 改为 listOf( DimensionItem.OrganisationUnitItem.Absolute(uid=DiszpKrYNg8) ) ), filters = listOf( "DiszpKrYNg8" ), 值 = listOf( DimensionalValue( dimensions = listOf("fbfJHSPpUQD", "202108")、 值 = "17" ) ), DimensionalValue( dimensions = listOf("fbfJHSPpUQD", "202109")、 值 = "112" ) ), DimensionalValue( dimensions = listOf("fbfJHSPpUQD", "202110")、 值 = "20" ) ) ) )
`DimensionalResponse` 对象中包含的属性:
- **元数据**:它包含 ID 到`MetadataItem`的映射。 id 是标识数据元素、句点(相对或绝对)、orgunits 等的字符串。id 的一些示例是“fbfJHSPpUQD”、“202108”、“LAST_3_MONTHS”、“USER_ORGUNIT”、...。此映射的目的是从其他属性(dimensionItems、过滤器或值)中使用的任何 id 快速获取可打印表示。 `MetadataItem` 接口包含两个基本属性,`id` 和 `displayName`,它可以很容易地与底层类匹配,以获取有关 DataElement、Indicator、Period 等的更多信息。
- **维度**:维度的有序列表,其中的值被分解。在上面的示例中,第一个维度是 `Data`,这意味着 values 中的 `dimensions` 属性中的第一个维度属于 `Data` 维度。第二个是时期。
- **DimensionItems**:它包含按维度类型分组的项目映射。它包含最初用于构建查询的项目:在上面的示例中,时间段是相对的,因此 Period 维度包括相对时间段`LAST_3_MONTHS`。
- **过滤器**:在查询中充当过滤器的 ID 列表。
- **值**:`维度值`列表。每个值都包含定义该值的有序 ID 列表。在上面的示例中,值“17”对应于“ANC 第一次访问”(“fbfJHSPpUQD”)和“2021 年 8 月”(“202108”)。您可以使用元数据映射从这些 ID 中获取更多信息。
DimensionItems 可以用作维度或过滤器。同一维度的多个项目可以组合在同一个查询中。例如,此查询获取“ANC 第一次访问”(数据元素“fbfJHSPpUQD”)和“ANC 1-3 辍学率”(指标“ReUHfIn0pTQ”)按类别“位置:固定/外展”(类别“fMZEcRHuamy”)分解使用UserOrganisationUnit(相对组织单位)中最近 3 个月(相对期间)内的选项“固定”(CategoryOption“qkPbeWaFsnU”)和“外展”(CategoryOption“wbrDrL2aYEc”),按数据项 legendSet 对值进行分类并覆盖聚合类型:
```java
d2.analyticsModule().analytics()
.withDimension(new DimensionItem.DataItem.DataElementItem("fbfJHSPpUQD"))
.withDimension(new DimensionItem.DataItem.IndicatorItem("ReUHfIn0pTQ"))
.withDimension(new DimensionItem.CategoryItem("fMZEcRHuamy", "qkPbeWaFsnU"))
.withDimension(new DimensionItem.CategoryItem("fMZEcRHuamy", "wbrDrL2aYEc"))
.withFilter(新 DimensionItem.PeriodItem.Relative(RelativePeriod.LAST_3_MONTHS))
.withFilter(new DimensionItem.OrganisationUnitItem.Relative(RelativeOrganisationUnit.USER_ORGUNIT))
.withLegendStrategy(AnalyticsLegendStrategy.ByDataItem.INSTANCE)
.withAggregationType(AggregationType.LAST)
。评价();
评估器对作为维度或过滤器传递的参数施加了一些限制(它们类似于 analytics web api 施加的参数):
- 至少必须包含一个维度项作为维度属性。
- 必须至少包含一个 data 维度项作为维度或过滤器。
此外,查询是根据本地元数据和数据进行评估的,这会施加额外的限制:
- DimensionItems(DataElement、Indicator、OrganisationUnit,...)必须下载到设备中。默认情况下,SDK 下载用户可访问的所有数据集和程序以及相关的元数据。
- 数据必须下载到设备中。评估仅考虑存储在本地数据库中的数据。
可以通过三个选项来定义 legendSet 策略。 AnalyticsLegendStrategy 类在 Kotlin 中是一个密封类,因此在使用 Java 编码时必须在对象值的末尾附加关键字 INSTANCE。代码示例:
d2.analyticsModule().analytics()
.withLegendStrategy(AnalyticsLegendStrategy.ByDataItem.INSTANCE) // 数据项使用自己的LegendSet
.withLegendStrategy(AnalyticsLegendStrategy.None.INSTANCE) // 不使用 LegendSets
.withLegendStrategy(new AnalyticsLegendStrategy.Fixed("fqs276KXCXi")) // 提供的 LegendSet 将用于所有数据项
可视化分析¶
可视化分析引擎提供了方便的方法来评估可视化对象。该引擎是在原始分析引擎之上实现的,它基本上实现了两个目标:
- 将可视化对象转换为对 Analtyics 引擎的查询。
- 返回可视化中定义的行、列和过滤器之后的格式化结果。
为了使用可视化对象,它们必须在 Android 设置 web 应用程序的“分析”部分进行设置。目前,无法从服务器下载按需可视化,只能通过 Android 设置 webapp 下载。
例如,假设我们有一个具有以下参数的可视化:
- 可视化(“SwtkWZFhrFQ”)。
- 列:
- 数据:两个数据元素(ANC 第一次访问“fbfJHSPpUQD”,ANC 第二次访问“cYeuwXTCPkU”)。
- 类别:位置固定/外展(“fMZEcRHuamy”)。
- 行数:
- 期间:LAST_3_MONTHS。
- 筛选:
- 组织单位:Badja(“YuQRtpLP10I”)。
可视化的预期表示将是这样的:

我们可以通过调用分析模块中的“可视化”存储库来获取可视化结果。或者,我们可以覆盖 Period 和 OrganisationUnit 的值。这对于在 UI 中公开过滤器以允许轻松修改结果很有用。
d2.analyticsModule().visualizations()
.withVisualization("SwtkWZFhrFQ")
[.withPeriods()]
[.withOrganisationUnits()]
。评价();
该方法将返回具有两个可能值的结果:GridAnalyticsResponse和AnalyticsResponse。让我们看一下GridAnalyticsResponse的结构。为了方便起见,我们使用 Kotlin 表示:
GridAnalyticsResponse(
metadata = mapOf(
"fbfJHSPpUQD" to MetadataItem.DataElementItem、
"cYeuwXTCPkU" to MetadataItem.DataElementItem、
将 "fMZEcRHuamy "转至 MetadataItem.CategoryItem.DataElementItem
将 "qkPbeWaFsnU "转至 MetadataItem.CategoryOptionItem、
将 "wbrDrL2aYEc "改为 MetadataItem.CategoryOptionItem、
将 "YuQRtpLP10I "更改为 MetadataItem.OrganisationUnitItem、
将 "202108 "更改为 MetadataItem.PeriodItem、
"202109" 转至 MetadataItem.PeriodItem、
将 "202110 "更改为元数据项.周期项
),
标题 = GridHeader(
columns = listOf(
listOf(
GridHeaderItem(id=fbfJHSPpUQD, weight=2)、
GridHeaderItem(id=cYeuwXTCPkU, weight=2)
),
listOf(
GridHeaderItem(id=qkPbeWaFsnU, weight=1)、
GridHeaderItem(id=wbrDrL2aYEc, weight=1)、
GridHeaderItem(id=qkPbeWaFsnU, weight=1)、
GridHeaderItem(id=wbrDrL2aYEc, weight=1)
)
),
rows = listOf(
listOf(
GridHeaderItem(id=202108, weight=1)、
GridHeaderItem(id=202109, weight=1)、
GridHeaderItem(id=202110, weight=1)
)
)
),
dimensions = GridDimension(
columns = listOf(
Dimension.Data、
Dimension.Category(uid=fMZEcRHuamy)
),
行 = listOf(
维度.周期
)
),
dimensionItems = mapOf(
Dimension.Data to listOf(
DimensionItem.DataItem.DataElementItem(uid=fbfJHSPpUQD)、
DimensionItem.DataItem.DataElementItem(uid=cYeuwXTCPkU)
),
Dimension.Period to listOf(
DimensionItem.PeriodItem.Relative(relative=LAST_3_MONTHS)
),
Dimension.Category(uid=fMZEcRHuamy) to listOf(
DimensionItem.CategoryItem(uid=fMZEcRHuamy, categoryOption=qkPbeWaFsnU)、
DimensionItem.CategoryItem(uid=fMZEcRHuamy, categoryOption=wbrDrL2aYEc)
),
Dimension.OrganisationUnit 到 listOf(
DimensionItem.OrganisationUnitItem.Absolute(uid=YuQRtpLP10I)
)
),
filters = listOf(
"YuQRtpLP10I"
),
值 = listOf(
listOf(
GridResponseValue(
columns=[fbfJHSPpUQD, qkPbeWaFsnU]、
rows=[202108]、
值=23
),
GridesponseValue(
columns=[fbfJHSPpUQD, wbrDrL2aYEc]、
rows=[202108]、
value=3
),
GridesponseValue(
columns=[cYeuwXTCPkU, qkPbeWaFsnU]、
rows=[202108]、
值=46
),
GridesponseValue(
columns=[cYeuwXTCPkU, wbrDrL2aYEc]、
rows=[202108]、
值=3
)
),
listOf(
GridesponseValue(
columns=[fbfJHSPpUQD, qkPbeWaFsnU]、
rows=[202109]、
值=21
),
GridesponseValue(
columns=[fbfJHSPpUQD, wbrDrL2aYEc]、
rows=[202109]、
value=10
),
GridesponseValue(
columns=[cYeuwXTCPkU, qkPbeWaFsnU]、
rows=[202109]、
值=23
),
GridesponseValue(
columns=[cYeuwXTCPkU, wbrDrL2aYEc]、
rows=[202109]、
值=8
)
),
listOf(
GridesponseValue(
columns=[fbfJHSPpUQD, qkPbeWaFsnU]、
rows=[202110]、
值=24
),
GridesponseValue(
columns=[fbfJHSPpUQD, wbrDrL2aYEc]、
rows=[202110]、
value=1
),
GridesponseValue(
columns=[cYeuwXTCPkU, qkPbeWaFsnU]、
rows=[202110]、
值=47
),
GridesponseValue(
columns=[cYeuwXTCPkU, wbrDrL2aYEc]、
rows=[202110]、
值=2
)
)
)
)
正如我们所看到的,GridDimensionalResponse 与 DimensionalResponse 非常相似,带有关于可视化中定义的列和行的附加信息。
GridDimensionalResponse 对象中包含的属性:
- 元数据:它具有与
DimensionalResponse相同的格式并遵循目的。 - 表头:它定义表中表头的结构。列/行中的每个条目代表一个维度。权重表示它适用于多少列/行。在示例中,列中的第一个维度 (dataElements) 的权重为 2,而第二个维度 (categoryOptions) 的权重为 1。查看表格很容易理解。
- 维度:它与
DimensionalResponse具有相同的目的,但维度按列和行分组。 - DimensionItems:它具有与
DimensionalResponse相同的格式并遵循目的。 - 过滤器:它具有与
DimensionalResponse相同的格式并遵循目的。 - 值:它包括有关值表示的附加信息。
值数组中的每个条目代表表中的一行。此条目是GridResponseValue的列表,代表表格中的一个单元格。每个“GridResponseValue”都包含有关该值所属的列和行的上下文信息。这种格式可以很容易地以表格格式打印结果,而无需进一步处理。
维度支持¶
| 尺寸 | 元件 | 支持 |
|---|---|---|
| 数据: | 指标 | 是* |
| 数据元素 | 是的 | |
| 数据元素详细信息 | 是的 | |
| 事件数据项 | 是的 | |
| 计划指标 | 是** | |
| 数据集:报告率 | 不 | |
| 数据集:按时报告率 | 不 | |
| 数据集:实际报告 | 不 | |
| 数据集:按时实际报告 | 不 | |
| 数据集:预期报告 | 不 | |
| 时期: | 固定的 | 是的 |
| 相对的 | 是的 | |
| 组织单位: | 固定的 | 是的 |
| 相对的 | 是的 | |
| 等级 | 是的 | |
| OU组 | 是的 | |
| 其他: | 类别(CategoryOptions) | 是*** |
| 类别选项组集 | 不 | |
| 组织单位组集 | 不 |
*详情请查看表格 Indicator support。
**详情请查看 程序指示器支持 表格。
***在 ProgramIndicators 的情况下,它们只适用于 EVENT ProgramIndicators。
指标支持{ #android_sdk_analytics_indicator_support }¶
此表显示了与后端分析相比,指标维度项支持的功能。
| 类型 | 元件 | 后端 | 安卓开发工具包 |
|---|---|---|---|
| 数学: | 插入语 | 是的 | 是的 |
| 加号 (+) | 是的 | 是的 | |
| 减 (-) | 是的 | 是的 | |
| 功率 (^) | 是的 | 不 | |
| 乘法 (*) | 是的 | 是的 | |
| 除法 (/) | 是的 | 是的 | |
| 模量 (%) | 是的 | 是的 | |
| 逻辑: | 不是 | 是的 | 是的 |
| ! | 是的 | 是的 | |
| 和 | 是的 | 是的 | |
| && | 是的 | 是的 | |
| 或者 | 是的 | 是的 | |
| || | 是的 | 是的 | |
| 比较: | 等于 (==) | 是的 | 是的 |
| 不等于 (!=) | 是的 | 是的 | |
| GT (>) | 是的 | 是的 | |
| 长 (<) | 是的 | 是的 | |
| 通用电气 (>=) | 是的 | 是的 | |
| 乐 (<=) | 是的 | 是的 | |
| 字数: | 无效 | 是的 | 是的 |
| 职能: | 第一非空 | 是的 | 是的 |
| 最伟大 | 是的 | 是的 | |
| 如果 | 是的 | 是的 | |
| IsNotNull | 是的 | 是的 | |
| IsNull | 是的 | 是的 | |
| 最少 | 是的 | 是的 | |
| 日志 | 是的 | 不 | |
| 对数10 | 是的 | 不 | |
| 子表达式 | 是的 | 不 | |
| .聚合类型 | 是的 | 是的 | |
| .maxDate | 是的 | 是的 | |
| .minDate | 是的 | 是的 | |
| .periodOffset | 是的 | 是的 | |
| .yearToDate | 是的 | 是的 | |
| 尺寸: | 不变 | 是的 | 是的 |
| 数据元素 | 是的 | 是的 | |
| 程序属性 | 是的 | 是的 | |
| 程序数据元素 | 是的 | 是的 | |
| 计划指示器 | 是的 | 是的 | |
| 组织单位组 | 是的 | 不 | |
| 报告率 | 是的 | 不 | |
| 天数 | 是的 | 是的 | |
| 年度期间 | 是的 | 是的 | |
| 年度周期数 | 是的 | 是的 | |
| N_Brace (指标) | 是的 | 不 |
计划指标支持{ #android_sdk_analytics_program_indicator_support }¶
本表显示了 ProgramIndicator 维度项与后台分析相比所支持的功能。
| 类型 | 元件 | 后台 | 安卓 SDK |
|---|---|---|---|
| 数学: | 括号 | 是的 | 是的 |
| 加号 (+) | 是的 | 是的 | |
| 减号 (-) | 是的 | 是的 | |
| 功率 (^) | 是的 | 不 | |
| 乘法 (*) | 是的 | 是的 | |
| 除法 (/) | 是的 | 是的 | |
| 模量 (%) | 是的 | 是的 | |
| 逻辑: | 不是 | 是的 | 是的 |
| ! | 是的 | 是的 | |
| 和 | 是的 | 是的 | |
| && | 是的 | 是的 | |
| 或 | 是的 | 是的 | |
| 比较: | 相等 (==) | 是的 | 是的 |
| NotEqual (!=) | 是的 | 是的 | |
| GT (>) | 是的 | 是的 | |
| LT (<) | 是的 | 是的 | |
| 通用电气 (>=) | 是的 | 是的 | |
| LE (<=) | 是的 | 是的 | |
| 字数: | 无效 | 是的 | 是的 |
| 职能: | 第一非空 | 是的 | 是的 |
| 最伟大 | 是的 | 是的 | |
| 如果 | 是的 | 是的 | |
| IsNotNull | 是的 | 是的 | |
| IsNull | 是的 | 是的 | |
| 最少 | 是的 | 是的 | |
| 日志 | 是的 | 不 | |
| 对数10 | 是的 | 不 | |
| 周期偏移 | 是的 | 不 | |
| 包含 | 是的 | 是的 | |
| 包含项目 | 是的 | 是的 | |
| D2功能: | D2AddDays | 不 | 不 |
| D2Ceil | 不 | 不 | |
| D2C 连接 | 不 | 不 | |
| D2Condition | 是的 | 是的 | |
| D2Count | 是的 | 是的 | |
| D2CountIfCondition | 是的 | 是的 | |
| D2CountIfValue | 是的 | 是的 | |
| D2DaysBetween | 是的 | 是的 | |
| D2Floor | 不 | 不 | |
| D2HasValue | 是的 | 是的 | |
| D2Left | 不 | 不 | |
| D2 长度 | 不 | 不 | |
| D2MaxValue | 是的 | 是的 | |
| D2 分钟之间 | 是的 | 是的 | |
| D2MinValue | 是的 | 是的 | |
| D2 模数 | 不 | 不 | |
| D2MonthsBetween | 是的 | 是的 | |
| D2Oizp | 是的 | 是的 | |
| D2RelationshipCount | 是的 | 是的 | |
| D2Right | 不 | 不 | |
| D2Round | 不 | 不 | |
| D2Split | 不 | 不 | |
| D2Substring | 不 | 不 | |
| D2ValidatePattern | 不 | 不 | |
| D2WeeksBetween | 是的 | 是的 | |
| D2 年之间 | 是的 | 是的 | |
| D2Zing | 是的 | 是的 | |
| D2Zpvc | 是的 | 是的 | |
| D2 最后活动日期 | 不 | 不 | |
| D2 添加控制数字 | 不 | 不 | |
| D2CheckControlDigits | 不 | 不 | |
| D2ZScoreWFA | 不 | 不 | |
| D2ZScoreWFH | 不 | 不 | |
| D2ZScoreHFA | 不 | 不 | |
| D2 机构单位组 | 不 | 不 | |
| D2HasUserRole | 不 | 不 | |
| 汇总功能: | 平均值 | 是的 | 不 |
| 计数 | 是的 | 不 | |
| 最大 | 是的 | 不 | |
| 分钟 | 是的 | 不 | |
| 百分位数 | 是的 | 不 | |
| stddev | 是的 | 不 | |
| stddevPop | 是的 | 不 | |
| stddevSamp | 是的 | 不 | |
| 数额 | 是的 | 不 | |
| 差异 | 是的 | 不 | |
| 变量: | 分析周期结束 | 是的 | 是的 |
| 分析周期开始 | 是的 | 是的 | |
| 创建日期 | 是的 | 是的 | |
| 当前日期 | 是的 | 是的 | |
| 完成日期 | 是的 | 是的 | |
| 到期日 | 是的 | 是的 | |
| 入学人数 | 是的 | 是的 | |
| 注册日期 | 是的 | 是的 | |
| 注册状态 | 是的 | 是的 | |
| 事件状态 | 是的 | 是的 | |
| 事件计数 | 是的 | 是的 | |
| 执行日期 | 是的 | 是的 | |
| 活动日期 | 是的 | 是的 | |
| 事件日期 | 是的 | 是的 | |
| 单位计数 | 是的 | 是的 | |
| 计划阶段 ID | 是的 | 是的 | |
| 节目阶段名称 | 是的 | 是的 | |
| 同步日期 | 是的 | 是的 | |
| TeiCount | 是的 | 是的 | |
| 值计数 | 是的 | 是的 | |
| 零位值计数 | 是的 | 是的 | |
| 其他: | 不变 | 是的 | 是的 |
| 节目阶段元素 | 是的 | 是的 | |
| 程序属性 | 是的 | 是的 | |
| PS_EVENTDATE | 是的 | 是的 |
聚合类型支持{ #android_sdk_analytics_aggregation_type_support }¶
| 类型 | 安卓 SDK |
|---|---|
| 总计 | 是的 |
| 平均值 | 是的 |
| 机构单位平均总和 | 是的 |
| 最后 | 是的 |
| 最后平均机构单位 | 是的 |
| LAST_IN_PERIOD | 是的 |
| 上期平均机构单位 | 是的 |
| 最后一个机构单位 | 是的 |
| 第一 | 是的 |
| 第一平均机构单位 | 是的 |
| 第一机构单位 | 是的 |
| COUNT | 是的 |
| STDDEV | 不 |
| 差异 | 不 |
| MIN | 是的 |
| 最小机构单位总和 | 是的 |
| 最大 | 是的 |
| max_sum_org_unit | 是的 |
| 无 | 不 |
| 定制 | 不 |
| 默认值 | 不 |
跟踪线路列表{ #android_sdk_tracker_line_list }¶
这种分析类似于通过线路列表网络应用程序获得的分析。它允许生成事件或注册级别的行列表。这些行列表可能包括数据元素、属性、计划指标、变量,并可选择通过其列中的值过滤这些条目。
常见的用例是生成符合特定条件的事件或注册列表,如特定范围内的值,或特定状态,或特定日期范围。
例如,如果查询包含 "fbfJHSPpUQD "计划中属性 "p4mRWMtCxtB "值介于 40 和 50 之间的所有 "ACTIVE "注册信息,查询结果将如下所示。请注意,状态是作为过滤器包含的,因此没有明确的列。
d2.analyticsModule().trackerLineList()
.withEnrollmentOutput("fbfJHSPpUQD")
.withFilter(
TrackerLineListItem.ProgramStatusItem(
filters = listOf(
EnumFilter.EqualTo(EnrollmentStatus.ACTIVE.name)
)
)
)
.withColumn(TrackerLineListItem.OrganisationUnitItem())
.withColumn(
TrackerLineListItem.ProgramAttribute(
uid = "p4mRWMtCxtB"、
filters = listOf(
DataFilter.GreaterThan("40")、
DataFilter.LowerThan("50")、
),
),
)
.evaluate()
响应是 TrackerLineListResponse 的结果对象,其结构如下:
``kt TrackerLineListResponse( metadata = mapOf( "p4mRWMtCxtB" to MetadataItem.TrackedEntityAttributeItem ), headers = listOf( TrackerLineListItem.OrganisationUnitItem、 TrackerLineListItem.ProgramAttribute ), 过滤器 = listOf( TrackerLineListItem.ProgramStatusItem ), 行 = listOf( listOf( TrackerLineListValue(id="ouItem",value="Child 1")、 TrackerLineListValue(id="p4mRWMtCxtB",value="45")。 ), listOf( TrackerLineListValue(id = "ouItem",value = "Child 2")、 TrackerLineListValue(id="p4mRWMtCxtB",value="49")。 ), listOf( TrackerLineListValue(id = "ouItem",value = "Child 2")、 TrackerLineListValue(id = "p4mRWMtCxtB", value = "41") ) ) )
可选择使用 TrackerVisualization 对象(在 API 中称为 EventVisualization)来评估预定义的行列表。TrackerVisualization 必须具有 LINE_LIST 类型。也可以覆盖特定值。
例如,该查询使用 TrackerVisualization "s85urBIkN0z "中的配置,并添加或覆盖按 ACTIVE 过滤的 ProgramStatusItem 列。
```kt
d2.analyticsModule().trackerLineList()
.withTrackerVisualization("s85urBIkN0z")
.withColumn(
TrackerLineListItem.ProgramStatusItem(
filters = listOf(
EnumFilter.EqualTo(EnrollmentStatus.ACTIVE.name)
)
)
)
.evaluate()
要使用 TrackerVisualization 对象,必须在安卓设置网络应用程序的 "分析 "部分进行设置。目前,还不能从服务器按需下载可视化,只能通过 Android 设置网络应用程序下载。
活动线路列表{ #android_sdk_event_line_list }¶
它们是基于事件的分析。如果你熟悉网络分析工具,它与事件报告(行列表)非常相似。它是 Tracker 行列表的简化案例。
一种常见的使用情况是,在特定 TEI 的背景下生成可重复阶段的事件行列表,以显示整个事件中特定值的演变情况。
例如,假设我们有一个包含两个数据元素(身高和体重)和一个基于这些值的指标(BMI,身体质量指数)的可重复阶段。我们希望显示这些值在不同事件中的变化情况
d2.analyticsModule().eventLineList()
.byProgramStage().eq("stage_id")
.byTrackedEntityInstance().eq("tei_id")
.withDataElement("height_id")
.withDataElement("weight_id")
.withProgramIndicator("BMI_id")
.evaluate();
结果将是一个事件列表,其中包含评估值(数据元素和指标)以及一些方便的displayName属性以在表格或图表中显示结果。