如图怎么取每个车牌号的首次违规时间和二次违规时间

楼主
我是社区第2068347位番薯,欢迎点我头像关注我哦~

根据数据库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、保存并更新,完成数据建模

 

 

新人学习,欢迎大家指点观照。

分享扩散:

沙发
发表于 2023-4-7 17:43:10
学习学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 1关注人数 3311浏览人数
最后回复于:2023-4-7 17:43

返回顶部 返回列表