统计图
新建统计图
新建统计图
鉴权方式
AppKey + Sign 是应用密钥鉴权,由管理员创建,用于以应用管理员身份访问应用数据。
版本
请求地址
Path 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
worksheet_id | string | 是 |
Header 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
HAP-Appkey | string | 是 | HAP应用密钥 |
HAP-Sign | string | 是 | HAP签名 |
Body 参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
chartName | string | 是 | 统计图名称。必填。 |
description | string | 否 | 统计图描述 |
beforeId | string | 否 | 锚点统计图 ID,新创建的统计图将有序排在此图表前面;不传或者传空放最后。 |
viewId | string | 是 | 视图 ID。必填。 |
chartType | string | 是 | 图表类型。支持值与约束: • columnChart/barChart 用于分类对比(1 个维度 + 1~N 个指标,或 2 个维度 + 1 个指标;不用于时间趋势) • lineChart 用于趋势分析(必须/优先使用时间维度) • pieChart 用于占比(1 个维度 + 1 个指标,分类多时配合 limit,不用于趋势) • radarChart 用于多指标对比(指标数量不宜过多) • funnelChart 用于阶段转化(阶段维度 + 1 个指标) • dualAxisChart 用于两个不同量纲或量级的指标对比(1 个维度 + values 恰好 1 个指标 + rightValues 恰好 1 个指标) • pivotTable 用于多维分析(必须 rows + columns + values,不使用 dimension) • regionMap/worldMap 仅用于地理分布(地区/定位维度 + 1 个指标) • numberChart 用于 KPI 卡片(0 个维度 + 1 个指标) • symmetricBarChart 用于镜像双指标对比(1 个维度 + values 恰好 1 个指标 + rightValues 恰好 1 个指标) • scatterChart 用于相关性分析(2 个数值指标,可选 1 个维度作为点) • wordCloud 用于文本频次(文本维度 + 1 个频次指标 + limit) • gaugeChart 用于单指标状态(0 个维度 + 1 个指标 + gaugeMin/gaugeMax) • progressChart 用于实际值与目标值对比(values + targetValues,条目数和顺序一致) • rankingChart 用于 TopN(1 个维度 + 1 个指标 + sorts + limit)。 |
dataScope | string | 是 | 数据权限范围。必填。permission=仅统计当前用户可见的数据;all=统计全部数据。 |
timeFieldId | string | 是 | 时间筛选字段 ID。必填。 |
timeRange | string | 是 | 时间范围类型。必填。固定范围:all(全部)、today(今天)、yesterday(昨天)、tomorrow(明天)、currentWeek(本周)、lastWeek(上周)、nextWeek(下周)、currentMonth(本月)、lastMonth(上月)、nextMonth(下月)、currentQuarter(本季度)、lastQuarter(上季度)、nextQuarter(下季度)、currentYear(本年)、lastYear(上一年)、nextYear(下一年)、firstHalfYear(上半年)、secondHalfYear(下半年)。快捷动态范围:last7Days(过去 7 天)、last30Days(过去 30 天)、last365Days(过去 365 天)、next7Days(将来 7 天)、next30Days(将来 30 天)、next365Days(将来 365 天)。自定义:customDynamicRange(需配合 customDynamicRange 参数)、customRange(需配合 customRange 参数)。 |
customDynamicRange | object | 否 | 自定义动态时间范围。仅当 timeRange=customDynamicRange 时传入。 |
customDynamicRange.from | object | 否 | 起始时间点。 |
customDynamicRange.from.type | string | 是 | 时间点类型。支持:today(今天)、currentMonth(本月)、currentYear(本年)、past(过去,需传 value+unit)、future(将来,需传 value+unit)。 |
customDynamicRange.from.value | integer | 否 | 偏移值。当 type=past 或 type=future 时必填。 |
customDynamicRange.from.unit | string | 否 | 偏移单位。当 type=past 或 type=future 时必填。支持:day(天)、week(周)、month(月)、year(年)。 |
customDynamicRange.to | object | 否 | 结束时间点。结构与 from 相同。 |
customDynamicRange.to.type | string | 是 | — |
customDynamicRange.to.value | integer | 否 | — |
customDynamicRange.to.unit | string | 否 | — |
customRange | object | 否 | 指定时间范围。仅当 timeRange=customRange 时传入。 |
customRange.startDate | string | 是 | 开始日期,格式 yyyy/MM/dd,如 '2026/01/01'。 |
customRange.endDate | string | 是 | 结束日期,格式 yyyy/MM/dd,如 '2026/12/31'。 |
dimension | object[] | 否 | 维度字段列表,适用于非 pivotTable 图表类型。第 1 个字段为 X 轴/类目维度,第 2 个字段(可选)为拆分/系列维度。优先选择分类、时间或地区字段,避免纯数值字段作为维度。趋势图应使用时间字段。地图图表必须使用真实地区/定位字段,不要使用普通文本。适用时用 granularity 指定时间/地区归组粒度。对 regionMap 而言,granularity 控制数据按省/市/区县聚合;地图底图展示范围和聚焦区域由 mapScope + mapRegionCode 控制。 |
dimension.field | string | 是 | 字段 ID 或别名。 |
dimension.displayName | string | 否 | 显示名称覆盖。可选。 |
dimension.granularity | integer | 否 | 日期或地区字段的归组粒度。日期/日期时间:1=日,2=周,3=月,4=季度,5=年。地区:1=省,2=市,3=区/县。这里控制的是数据聚合层级,不等同于地图底图展示范围。 |
dimension.includeEmpty | boolean | 否 | 是否统计空值,默认为 false 不统计。 |
rows | object[] | 否 | 行维度字段。仅 pivotTable 图表类型使用。 |
rows.field | string | 是 | 字段 ID 或别名。 |
rows.displayName | string | 否 | 显示名称覆盖。可选。 |
rows.granularity | integer | 否 | 日期或地区字段的归组粒度。 |
rows.includeEmpty | boolean | 否 | — |
columns | object[] | 否 | 列维度字段。仅 pivotTable 图表类型使用。 |
columns.field | string | 是 | 字段 ID 或别名。 |
columns.displayName | string | 否 | 显示名称覆盖。可选。 |
columns.granularity | integer | 否 | 日期或地区字段的归组粒度。 |
columns.includeEmpty | boolean | 否 | — |
values | object[] | 否 | 值字段列表(指标)。指标必须是数值型字段或记录数。聚合方式:COUNT(计数)、DISTINCTCOUNT(去重计数)、SUM(求和)、MIN(最小值)、MAX(最大值)、AVG(平均值)。计数时 field 可传 rowid。用户未指定聚合方式时,数值字段默认 SUM,rowid 默认 COUNT。大多数图表为可读性建议使用 1~2 个指标;pie/funnel/ranking/wordCloud/regionMap/worldMap/gaugeChart 通常恰好 1 个指标。 |
values.field | string | 是 | 字段 ID 或别名。计算记录数时传 rowid。 |
values.aggregation | string | 是 | 聚合方式(不区分大小写):COUNT、DISTINCTCOUNT、SUM、MIN、MAX、AVG。 |
values.displayName | string | 否 | 显示名称覆盖。可选。 |
rightValues | object[] | 否 | 副 Y 轴值字段。仅 dualAxisChart(双轴图)和 symmetricBarChart(对称条形图)使用。结构与 values 相同。这两类图表应在 values 中恰好传 1 个指标,并在 rightValues 中恰好传 1 个指标;指标量纲或量级差异较大时优先用 dualAxisChart,两个指标具备直接可比性时可用 symmetricBarChart。 |
rightValues.field | string | 是 | 字段 ID 或别名。 |
rightValues.aggregation | string | 是 | 聚合方式:COUNT、DISTINCTCOUNT、SUM、MIN、MAX、AVG。 |
rightValues.displayName | string | 否 | 显示名称覆盖。可选。 |
targetValues | object[] | 否 | 进度目标值字段。progressChart(进度条)必填。条目数和顺序必须与 values 一致;values 表示实际值指标,targetValues 表示目标值指标。 |
targetValues.field | string | 是 | 字段 ID 或别名。 |
targetValues.aggregation | string | 是 | 聚合方式:COUNT、DISTINCTCOUNT、SUM、MIN、MAX、AVG。 |
targetValues.displayName | string | 否 | 显示名称覆盖。可选。 |
gaugeMin | string | 否 | 仪表盘最小值,如 '0'。仅 gaugeChart 使用,必填。 |
gaugeMax | string | 否 | 仪表盘最大值,如 '100'。仅 gaugeChart 使用,必填。 |
mapScope | string | 否 | 地图展示范围。仅 chartType=regionMap 时使用。country=全国(默认,等同于不传);province=聚焦单个省级区域;city=聚焦单个市级区域。 可选值: "country""province""city" |
mapRegionCode | string | 否 | 行政区划代码。仅 chartType=regionMap 时使用,需与 mapScope 配合:mapScope=country 时不传或传空字符串;mapScope=province 时必填,传 6 位省级代码且后 4 位为 0000,例如 440000=广东省、110000=北京市;mapScope=city 时必填,传 6 位市级代码且后 2 位为 00,例如 440100=广州市。直辖市及特别行政区(110000 北京、120000 天津、310000 上海、500000 重庆、810000 香港、820000 澳门)即使传在 mapScope=province 下,也按城市级范围处理。 |
filter | object | 否 | 筛选器对象,用于定义统计图数据查询的过滤条件。 filter 的根节点必须始终为 group,不能直接传 condition。即使只有一个筛选条件,也必须使用 group 包裹,并通过 children 传入 condition。 Filter 结构
注意事项
使用示例示例 1:单个筛选条件也必须使用 group 包裹
示例 2:简单筛选条件查询所有 1 月份入职、姓“张”的职员:
示例 3:多层筛选组查询华北区市场部/销售部,1 月入职且姓“张”的职员: |
filter.type | string | 否 | — 可选值: "group""condition" |
filter.logic | string | 否 | — 可选值: "AND""OR" |
filter.children | object[] | 否 | — |
filter.children.type | string | 否 | 子节点类型。 可选值: "group""condition" |
filter.children.logic | string | 否 | 分组节点的条件组合方式。 可选值: "AND""OR" |
filter.children.children | object[] | 否 | 子分组中的条件列表;最多两层 group 嵌套。 |
filter.children.children.type | string | 否 | 条件节点。 可选值: "condition" |
filter.children.children.field | string | 否 | 筛选字段 ID。 |
filter.children.children.operator | string | 否 | 筛选运算符,取值见 filter.operator。 |
filter.children.children.value | any | 否 | 筛选值,类型由运算符决定;为空运算符不传。 |
filter.children.field | string | 否 | 条件节点的字段 ID。 |
filter.children.operator | string | 否 | 条件节点的运算符,取值见 filter.operator。 |
filter.children.value | any | 否 | 条件节点的筛选值,类型由运算符决定;为空运算符不传。 |
filter.field | string | 否 | 必须传入 Field ID。注意:当字段结构来自 Markdown 格式时,如果字段 ID 中包含 "(isTitle)",该标记仅用于表示此字段是标题字段,不属于字段 ID 的一部分。在传参时应移除 "(isTitle)",仅保留真实字段 ID。 |
filter.operator | string | 否 | 支持的筛选运算符: 比较运算符:
为空运算符:
可选值: "eq""ne""gt""ge""lt""le""in""notin""contains""notcontains""concurrent""belongsto""notbelongsto""startswith""notstartswith""endswith""notendswith""between""notbetween""isempty""isnotempty" |
filter.value | object | 否 | 筛选值。根据运算符不同,可传字符串、数字或数组。
|
sorts | object[] | 否 | 排序配置。可选。 |
sorts.field | string | 是 | 排序字段 ID 或别名。 |
sorts.isAsc | boolean | 否 | 排序方向。true=升序,false=降序(默认)。 |
limit | integer | 否 | 返回数据条数上限。rankingChart、wordCloud 以及分类数量较多的图表建议传入,用于保持可读性并表达 TopN 分析。 |
响应参数
200创建成功| 名称 | 类型 | 描述 |
|---|---|---|
success | boolean | 是否调用成功 |
error_code | integer | 错误代码 |
error_msg | string | 错误消息 |
data | object | — |
data.chartId | string | 统计图 ID |
data.view_id | string | 视图 ID |
data.worksheet_id | string | 工作表 ID |
data.chartName | string | 统计图名称 |
data.chartType | string | 统计图类型 |
data.timeFieldId | string | 时间筛选字段 ID |
data.timeRange | string | 时间范围类型 |
curl -X POST "https://example.com/v3/app/worksheets/worksheet_id/charts" \ -H "HAP-Appkey: {{HAP-Appkey}}" \ -H "HAP-Sign: {{HAP-Sign}}" \ -H "Content-Type: application/json" \ -d '{ "chartName": "统计图", "description": "统计图描述", "beforeId": "chart_existing_id", "viewId": "view_id", "chartType": "columnChart", "dataScope": "permission", "timeFieldId": "time_field_id", "timeRange": "all" }'{ "success": true, "data": { "chartId": "chart_id", "view_id": "view_001", "worksheet_id": "worksheet_001", "chartName": "各状态需求数量", "chartType": "columnChart", "timeFieldId": "ctime", "timeRange": "last30Days" }}