如何使用映射数据流扁平化数据湖中JSON字符串列的层次结构 [英] How to use Mapping Data flow to flatten hierarchy of a JSON string column in Data Lake

查看:8
本文介绍了如何使用映射数据流扁平化数据湖中JSON字符串列的层次结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在data Lake的容器中有CSV文件,我正在尝试将文件中的属性列(在json中)转换为多个列。当我尝试使用数据流来执行此操作时,它将属性列识别为字符串,并且我无法将其更改为数组,以便我可以对其进行展平或从中创建派生列。我是不是做错了什么 CSV文件格式:

ID 名称 属性
123 测试 {";Referrer URL&Quot;:空,&Quot;查询参数&Quot;:&Quot;主题&Quot;}
456 测试2 {";Referrer URL";:";www.google.com";,";查询参数";:";WebTopics";}

遵循马可和约瑟夫的指导: 在这些列中使用解析函数和从JSON对象的键中删除空格时面临的问题

  1. 替换函数不也会从与这些键关联的值中删除空格吗?如果我们在这些字段中获取语句类型数据,这可能是一个问题。
  2. 我按照约瑟夫提到的所有步骤操作仍然会遇到问题。它可能与我如何设置数据集相关。如果我使用数据预览来检查数据,我会发现源没有正确地填满列。在本例中,它只是在Refferer URL为空之后停止,并且不显示列中的其他值以及json对象的结束括号。正在添加数据采集连接设置的图片。

推荐答案

更新:
Hi@Hammad Hassan Khan,由于您的Attribute列包含";,";字符,所以我按如下方式编辑它。在源代码中使用竖线(|)作为列分隔符:


附上@Mark Kromer MSFT给出的答案。是的,我们可以在映射数据流中使用Parse transformation来实现这一点。但是Parse活动不支持键包含空格字符的JSON对象。因此,我们需要替换空格字符。

我为此创建了一个简单的测试。结果如下:

  1. 数据源如下:

  2. DerivedColumn1活动中。选择Attribute列,输入表达式replace(Attribute,' ','' )替换键中的空格。因为在下一个Parse1活动中,它不支持包含空格字符的键。
    数据预览如下:

  3. Parse1活动中,选择Attribute列,输入AttributeAs表达式(ReferrerURL as string,QueryParameters as string)As输出列类型
    数据预览如下:

这篇关于如何使用映射数据流扁平化数据湖中JSON字符串列的层次结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆