首页 > 解决方案 > 如何使用映射数据流来展平数据湖中 JSON 字符串列的层次结构

问题描述

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

ID 姓名 属性
123 测试 {"Referrer URL":null,"查询参数":"topics"}
456 测试2 {"Referrer URL":"www.google.com","查询参数":"WebTopics"}

在遵循 Mark 和 Joseph 的指导后:使用解析函数和从这些列中的 json 对象中的键中删除空格时遇到的问题

  1. 替换函数不会从与这些键关联的值中删除空格。如果我们在这些字段中获取句子类型数据,这可能是一个问题。
  2. 当我遵循约瑟夫提到的所有步骤时,我仍然遇到问题。它可能与我设置数据集的方式有关。如果我使用数据预览来检查数据,我会看到源没有正确填充列。在示例中,它只是在引用 URL 为空后停止,并且不显示其他值以及列中 json 对象的右括号。添加数据湖连接设置的图片。

完成所有步骤后

连接设置 在此处输入图像描述 Excel 中的实际值

标签: azure-data-factoryazure-data-lakeazure-data-lake-gen2

解决方案


因为您的 JSON 字符串实际上是分隔文本文件中的字符串字段,所以您首先需要使用 Parse 转换对其进行解析。现在“属性”是一种 JSON 数据类型,您可以使用其中的结构和数组。

https://docs.microsoft.com/en-us/azure/data-factory/data-flow-parse

选择“属性”作为您的表达式属性并为列属性命名。ADF 将基于该新名称创建一个新的分层列,其属性是您在输出属性中标识的列。


推荐阅读