根据数据库Exam.db中提供的交通违规记录表(TrafficViolations),对相关驾驶员进行首次到二次违规的数据进行分析统计,包括驾驶员距首次违规间隔天数、前两次违规罚款差额等相关数据
注:主要考查考生的FineBI数据建模能力,以下所有试题内容需要配置FineBI中的关联关系或者自助数据集进行建模,不得使用SQL数据集进行建模解答。
由于不能用sql,无法利用sql的开窗口函数直接拉取二次违规的数据。做了比较久的时间。
我的思路是先试试能否有支持类似窗口的内置函数处理,个人没有找到,只找到了分组首次时间的获取方式,有更好的方法或思路感谢提供一下。
1.根据Driver ID分组排序,按违章时间添加序号,将第一次违章的记录、第二次违章记录分别过滤出来形成两张表。
2.用第一次违章记录的表左关联第二次违章记录的表。
3.增加2个公式列分别计算驾驶员距首次违规间隔天数、前两次违规罚款差额。
实操:
1、新增公式列,将文本日期字符串转成日期格式(我用的函数是将后面三个字符串去除 REPLACE(${Infraction Date},RIGHT(${Infraction Date},3),""))
2、字段设置,将新增的字段改成日期格式
3、添加序号字段,点击新增汇总列,如图所示
4、点击保存,然后将表1复制一份形成表2,用于关联
5、继续处理表1,使用过滤,过滤出序号=1的记录
6、进行字段设置,将违规时间、罚款金额修改成首次违规时间、首次违规罚款,然后保存一下。
7、处理表2,类似5、 6步,过滤出序号=2的记录,将违规时间、罚款金额修改成二次违规时间、二次罚款金额,然后保存。
8、切换到表1,进行左连接设置,按Driver ID进行关联
9、新建2个公式列,计算距首次违规间隔天数【IF(ISNULL(${二次违章日期}),"N/A",DATEDIF(${首次违章时间},${二次违章日期},"D"))】、前两次违规罚款差【IF(ISNULL(${二次违章罚款}), "N/A", ${二次违章罚款}-${首次违规罚款})】
10、保存并更新,完成数据建模
新人学习,欢迎大家指点观照。 |