在网络时代,大量的数据交互以xml和json格式提供,特别是系统间的数据交互和网络WebAPI、WebService接口的数据提供,都是通过结构化的xml或json提供给其他应用调用返回数据。 若能提供xml或json结构的数据直接转换为标准数据表结构,将大大减少了xml或json的数据解释的工作量,特别是可以让数据直达终端用户,让用户自主地选择所需数据,而不是靠程序员自己解释,取舍哪些字段需要。 今天第90波,特意献上有分量的json转标准数据表结构的功能,再次大大减少了对专业IT的依赖程度和调动用户自助式进行数据处理的能力。
业务场景
一般来说,网抓的数据,很多时候也需要进行json的解释,因为网络接口的变动致使网抓程序失效也是常有的事情。
同样地,数据的处理过程中,难免要对数据进行精减取舍,一份完整的数据源,不同人对其的数据需求不一,若没有让用户去参与选择需要哪些字段信息,而一刀切地处理数据,想必增加不少工作量,也增加了返工的次数。
数据分析过程中,必定需要标准的数据表结构的数据,对json/xml这样的数据结构,是无法开展分析工作的,大量的时间花在解释json、xml文件的结构上,单调乏味还耗时也没有什么价值感。
一开始抱有一点希望,直接用PowerQuery来操作,界面化的解释过程,想必非常友好和智能,试了一翻,虚有徒表,起码我这样的PowerQuery水平未能很好地解决和拿到自己想要的效果。
powerquery上进行json的解释
json、xml结构的数据,也有可能是一个dataset结构的,即数据内部会有多张表关联而成,表与表之间的关系除了较理想的一对多关系,更有多对多关系,生硬地进行拆解,必然会产生数据膨胀重复,让数据统计产生错误。
例如:一个json结构的订单表,主订单中包含了买家信息,而可能这个买家信息又展开多重信息如买家的多个购物喜爱标签,而在订单明细上,一个明细记录只和一个主订单关联,若不小心关联到买家信息,产生多对多的关系,多条订单明细和多个购物喜爱标签两两关联,产生了笛卡尔积的数据结构。
一般开发者存储的数据结构为规范化的数据,将数据拆散在多个表中存储防止冗余,而数据分析的很大需求是将其 反规范化,将多个表的数据合并为一个大的宽表,允许冗余,在普通工具如PowerQuery上很难考虑这种问题
综上所述,这一切的难点和痛点将在此篇功能中得到一一解决。
功能简介
除了核心的json转表格结构外,另外附带了两个json和xml互转的功能,即其实无论是json或xml都可以实现转换为标准表结构的数据(xml格式先转为json,再由json转表结构)
功能入口
使用步骤
步骤1:老规则,用单元格选择的方式来确定需要处理的json文件或文本。
同一次处理的json数据结构应该是相同的,且最好将第1个单元格内放置最全字段的json数据,后续其他单元格的数据将按第1个单元格提取到的规则动作。
先选定要处理的json文件
也可以选定处理json文本
步骤2:点击【批量json转Excel表格】按钮,确定选择类型
单元格内容属于文件路径还是文本的确认
步骤3:根据窗体界面,选择所需表和所需字段
最终要解释的json,可能存在多个表在里面,此处选择自己所需的表导出,可根据表的字段数量、和字段名和下方选择后显示出来的对应的数据清单来决定选择所要输出的数据。 可选择字段名单元格,Ctrl C复制后,粘贴到记事本中观察字段的完整名字,名字对应的是json的路径
选择表名
json文件中存在多个数组结构,需要拆分成多张表
字段名中保存的是businessAreas这个数组下的表
对于不需要导出的字段,可以将其对应的复选框去勾选,导出数据时将不对这些列导出。
不需导出的字段去勾选字段名
步骤4:点击【确认表格及字段选择】,程序将按所选择的信息进行json数据提取。
数据已顺利地进行转换,存放到工作表内,轻松满足下一步的分析工作。
最终数据展示在Excel工作表内
json与xml互转功能
操作方式很简单,不再展开,可按指引操作即可。
结语
因程序员与数据分析的需求点不同,在网络应用中,程序员更倾向于将数据转成json供网页渲染或供其他程序来调用共享数据。但在数据分析人员群体,数据永远需要整理成标准数据表结构的数据。
处理xml或json可能对程序员不是什么问题,对一般用户,那就是天书一般,需要会xpath、jpath等数据查询语言才能对其进行处理,门槛太高。
Excel催化剂专心做一件事,对数据处理与分析工作,尽最大化地拉低门槛,让普通用户一样可以玩转各种复杂数据转换与分析。
今天第90波,算是非常有份量的一波,后续各种网络爬虫功能,也将大大加速开发效率,同时也还给用户更大的自由度,想要什么数据,特别是有对更详细字段需求的个别用户,一概支持到底!