原理

依赖于列表取数(即开篇讲的hcm.model.list、hcm.model.count体系取数)或OpenApi(其他个性化接口或个性化云函数)的取数方式取数、形成一个个数据块(源)、然后将获取的数据整合到excel模版公式上、形成报表进行展示。

由过滤条件、Excel表样、数据块组成


配置大体步骤:

配置步骤

本节以inspur6分析报表1作为分析报表入门案例:https://inspur6.hcmcloud.cn/#/flex_report/setup?report=rpt_01


新建报表

1. 报表平台中点击新增-新建报表

报表类别请选择分析报表、按要求填入必要的基本信息

2. 点击上传模版

将excel表样上传到系统中

点击过滤设置

点击过滤设置、添加报表过滤条件

数据源设置

制作前分析:

此报表规则:统计当前部门下人员基本信息、教育经历信息(单条由毕业学校-专业-学历拼成、如果一人存在多条教育经历时、则换行拼接显示)

如果配置1个数据块(主模型当前任职JobInformation、关联模型岗位模型、组织层级模型、人员模型、关联教育经历模型)不可行。因为当一个人有多条教育经历时、通过人员关联教育经历模型后会导致返回多条数据,因为要保证单人单条数据的原则、此时就不满足条件)

得出结论:需要配置2个数据块 数据块1:主模型当前任职JobInformation、关联模型岗位模型、组织层级模型、人员模型 

                                                   数据块2: 教育经历模型

                                                   利用excel模版公式、将教育经历数据拼接成(单条由毕业学校-专业-学历拼成、如果一人存在多条教育经历时、则换行拼接显示)形式与人员数据展示在模版中即可

数据块1 hcm.model.list接口: 

{
  "model": "JobInformation",
  "filter_dict": {
    "on_job": 1,
    "begin_date": {
      "lte": "2021-04-29"
    },
    "end_date": {
      "gt": "2021-04-29"
    },
    "position_type": 1
  },
  "extra_property": {
    "relations": [
      {
        "filter": {
          "employee.id": ":employee_id"
        },
        "model": "Employee",
        "key": "employee"
      },
      {
        "filter": {
          "position_id": ":position.origin_id",
          "position.begin_date": {
            "lte": "=date_"
          },
          "position.end_date": {
            "gt": "=date_"
          }
        },
        "model": "OrgPositionHistory",
        "type": "outer",
        "key": "position"
      },
      {
        "model": "DepartmentHierarchy",
        "type": "inner",
        "key": "dept_level",
        "filter": {
          "dept_level.department_id": ":position.parent_id",
          "dept_level.begin_date": {
            "lte": "=date_"
          },
          "dept_level.end_date": {
            "gt": "=date_"
          },
          "dept_level.l0_id": 13567318
        }
      }
    ]
  }
}

数据块2 hcm.model.list接口:正常这里是可以不传参数的,但是这样第二个数据块取到内容就太多了,容易导致报表计算太慢,所以这里可以传个参数

{
  "model": "EmployeeEducation",
  "filter_dict": {
    "employee_id":["人员id1","人员id2","人员id3"]
  }
}

配置数据块1

1.设置-数据源-新增数据块1-列表取数定义-模型类型 选择自定义

因为第1个数据块是获取当前部门下人员明细信息、掉的是hcm.model.list接口、因此取数类型选择:列表

标识和名称是块的唯一识别、自行定义即可、这我们定义成emp_list

标识名称取数类型用于分页预览高级
此数据块的唯一识别、自定义即可、后期与Excel进行模版绑定展示内容 自定义即可掉hcm.model.count做统计那就选统计,掉hcm.model.list拿明细数据就选列表

明细分页、

统计一般不分页

数据块配置完成后、支持预览、可以查看此数据块返回值整体配置展示在高级json里面、可以支持配置整体复制

2. 点击自定义模型-切换参数-点击新增模型参数

配置数据块1的模型参数、将接口里面2021-04-29日期换成传进来date_、13567318换成depart_id,所以新加了两个参数给这个数据块1。

3. 切换模型-点击新增

按照明细表和汇总表一样的配置方式、来配置数据块1的主模型及过滤、配置关联模型及过滤。

4. 配置字段列表

配置好主模型及关联模型后、需要配置列表展示哪些字段,即新增显示字段、这里注意设置展示字段的标识要与excel标识保持一致。

以年龄为例:标识emp_age_count、那么上传模版时excel中单元格标识也得emp_age_count才能展示出来

5. 设置过滤条件

将外层过滤与此数据块参数进行绑定

6.预览

此时数据块1配置完成、配置无误的话、点击预览出现以下数据内容



配置数据块2

1.设置-数据源-新增数据块2-列表取数定义-模型类型 选择自定义

2. 点击自定义模型-切换参数-点击新增模型参数

需要将"employee_id":["人员id1","人员id2","人员id3"] 替换模型参数、即增加employee_ids人员清单这个参数

3. 切换模型-点击新增

按照明细表和汇总表一样的配置方式、来配置数据块2的主模型及过滤、无关联模型无需配置关联模型、主模型过滤为人员id包含employee_ids

4. 配置字段列表

配置列表字段、将拼接的学历、专业、学校三个字段配置出来、且字段标识与excel标识中保持一致。注意⚠️:要把人员id字段配置出来、这个作为Excel公式关联两组数据块之间关联的媒介

5. 设置过滤条件

我们前面设置的模型参数employee_ids是依赖于第一个数据块的人员id列表

即我们调取公式:LIST_GET(emp_list,'emp_id')

emp_list为上一个数据块的标识、emp_id为当条的key值

示例:

emp_list输入
输出
[{"emp_id":123,"name":"孙"},{"emp_id":1234,"name":"李"}]LIST_GET(emp_list,'emp_id')[123,1234]

这样我们通过配置这个公式在过滤条件中、就可以把数据块1的人员id输送给数据块2当模型参数

6.预览

配置excel公式

此模版用到了两个excel公式、还有很多其他公式我们后面会有详细介绍。

公式1: [list:emp_list:{emp_number}]       [list:数据块名key:{数据块字段key}] 

展开公式:  取到emp_list数据块中emp_number字段做纵向展开、一般有展开列的数据只配置一次[list:emp_list:{emp_number}]即可、编号如果配置了、那么姓名、岗位、性别等就不需要在配置、只配置字段key{emp_age_count}即可。

公式2:[VLOOKCUBE(edu_list,'employee_id:eq:{emp_id}',['edu_school','edu_specialty','edu_education'],'-')]     

edu_list数据块 纵向展开数据块 
[{'employee_id':123,'edu_school':'清华大学','edu_specialty':'自动化专业','edu_education':'本科'},{'employee_id':123,'edu_school':'北京大学','edu_specialty':'软件专业','edu_education':'硕士'}][{'emp_id':123,'name':'张三'}]

清华大学-自动化专业-本科

北京大学-软件专业-硕士

拼接公式: edu_list数据块中employee_id字段等于emp_list中emp_id字段的数据做拼接、拼接字段是edu_school和edu_specialty和edu_education。拼接方式是'-'拼接


点击计算、完成此报表制作

常见的分析报表公式

VLOOKUP:常用于直接查找。

VLOOKSTAT:查找符合条件的数据后并对数据进行分析,支持分析的方式有汇总类型 count:合计数, sum:汇总数,avg:平均值, max:最大值,min:最小值

VLOOKCUBE:查找的内容后在做组合

CELL:获取指定坐标的值,常用于分析报表里的计算,通过CELL获取部分单元格的值之后相加减。

RANGE_SUM:合计



  • 无标签