azure-data-factory - 如何使用映射数据流来展平数据湖中 JSON 字符串列的层次结构
问题描述
我在 Data Lake 的容器中有 CSV 文件,我正在尝试将文件中的属性列(在 json 中)转换为多个列。当我尝试使用数据流来执行此操作时,它将属性列识别为字符串,我无法将其更改为数组,以便我可以展平或从中创建派生列。我在这里做错了什么CSV文件格式:
ID | 姓名 | 属性 |
---|---|---|
123 | 测试 | {"Referrer URL":null,"查询参数":"topics"} |
456 | 测试2 | {"Referrer URL":"www.google.com","查询参数":"WebTopics"} |
在遵循 Mark 和 Joseph 的指导后:使用解析函数和从这些列中的 json 对象中的键中删除空格时遇到的问题
- 替换函数不会从与这些键关联的值中删除空格。如果我们在这些字段中获取句子类型数据,这可能是一个问题。
- 当我遵循约瑟夫提到的所有步骤时,我仍然遇到问题。它可能与我设置数据集的方式有关。如果我使用数据预览来检查数据,我会看到源没有正确填充列。在示例中,它只是在引用 URL 为空后停止,并且不显示其他值以及列中 json 对象的右括号。添加数据湖连接设置的图片。
解决方案
因为您的 JSON 字符串实际上是分隔文本文件中的字符串字段,所以您首先需要使用 Parse 转换对其进行解析。现在“属性”是一种 JSON 数据类型,您可以使用其中的结构和数组。
https://docs.microsoft.com/en-us/azure/data-factory/data-flow-parse
选择“属性”作为您的表达式属性并为列属性命名。ADF 将基于该新名称创建一个新的分层列,其属性是您在输出属性中标识的列。
推荐阅读
- jquery - 如何获取 JSON 文件中每个元素的值
- python - 从python中的列表填充空数据框
- java - 不应该更改的 ArrayList 列表
- java - 尝试创建一个循环,在添加错误的值时要求更正
- java - 使用 Keycloak Java 连接器,如何在不使用 getGroupByPath 的情况下获取自定义组属性?
- python - 将 django-cms 转换为 Headless CMS 时面临的问题
- mysql - 如果整行值为0,sql如何隐藏行
- excel - 检索网站表但表名不更新的 VBA 代码
- react-native - navigation.navigate 不是 react-navigation 中的功能问题
- ignite - 用备份计数为零点燃