0
点赞
收藏
分享

微信扫一扫

遇到问题长时间不能解决时,你是否懂得变换思路呢?

先介绍一下需求的背景:

最近在做数据入库测试的时候,源数据是调第三方api接口获取的数据入库,一开始的时候,按照产品给的解析文档和接口字段映射关系,已经把入库的需求都测试完了,后来产品在分析数据的时候,修改了一下规则,改成数据源返回的结果中,a字段的值大于b字段的值时,此条数据不入库。

接下来开始对这个规则微调进行验证,测试的整体思路是:

1、目前现有的数据已经入库,可以考虑将对应的这种数据找出来,删掉后,再重新执行数据清洗的etl任务,检查这些按照新规则需要过滤掉的数据,是否不会再入库。

2、删除一条已入库的正常数据,然后再重新执行任务单独跑这条数据,检查是否可以重新入库,验证之前的正常功能没有改出问题。

问题来了:

我们入库的数据是存在mongodb数据库里面的,而且这两个字段的值是数值型,但是数据库存储的是字符串,直接用对比的话,筛选出来的数据是不对的。

mongo对比两个字段的查询用法:

db.table_name.find({"$where": "this.fields1 == this.fields2"})

像上面这种用法,对比是否相等还行,要对比两个字符串的值的大小的时候,是行不通的,还得百度一下这种复杂的操作是怎么弄的,还涉及到字段的格式转换,貌似要用到 aggregate,对我来说这种复杂的用法用得少,在折腾了一小会之后,想到了另一种办法:那就是将表里面的数据导出到csv文件里面,然后自己在文件里面用excel筛选对比一下,很快就找到了自己想筛选的数据。

如果大家公司对只能使用正版软件没要求的,可以试试用Studio3T,可以用类似SQL的用法去查询MongoDB中的数据,然后还可以对应的生成查询语句和各种脚本。当然,像这种这么好用的工具,肯定是付费的软件,对于公司有严格要求的来说,不能将这种未购买的软件用于商业用途。

说了这么多,是想告诉大家,在遇到问题的时候,如果当前的解决方案行不通的时候,不妨静下心来换一种思路。比如,平常大家在工作中遇到问题的时候,如果自己花了半小时还没找到原因或者还不知道怎么解决的,不妨尝试问一下身边的同行,说不定你现在遇到的问题,正好大佬们踩过坑。但是,要注意一点,群里问别人问题的时候,自己要先把问题描述清楚。类似那种 怎么做接口测试,有没有用过pytest,如果是这么问问题的话,估计绝大多数情况下是没什么人搭理你的~



举报

相关推荐

0 条评论