Azure 数据流展平并解析复杂 JSON 的键/值列

问题描述 投票:0回答:1

我正在尝试使用 Azure synapse 数据流将键/值数据转换为列。基本上是这样的:

"scoreIndeces": {
"66": 0.2,
"67": 0.3,
"68": 0.4,
"70": 0.5,
"71": 0.6,
"73": 0.7,
"77": 0.8,
"78": 0.9,
"80": 1,
"81": 1.1,
"82": 1.2,
"83": 1.3,
"84": 1.4,
"85": 1.5,
"86": 1.6,
"87": 1.7,
"88": 1.8,
"89": 1.9
}

进入这个:

scoreIndecesKey scoreIndecesValue
66 0.2
67 0.3

如何解决这个问题?

我按照这个问题中提供的步骤进行操作,但它与我的用例不匹配。

azure azure-synapse-analytics azure-synapse-pipeline
1个回答
0
投票

您可以在数据流中使用Unpivot转换来实现您的要求。

获取所需的

scoreIndeces
对象作为列后,使用 选择转换 基于规则的映射 将内部键提取为列。在选择转换中,选择 添加映射-> 基于规则的映射,并将
scoreIndeces
对象指定为层次结构级别,如下所示。这会将所有内部键提取为列和行。

enter image description here

要取消透视,它需要一个分组列。因此,使用派生列转换并创建一个新列

key
并给出任何字符串值。此外,使用派生列列模式选项将所有列值转换为字符串。单击添加并选择列模式并给出以下表达式。

enter image description here

然后,使用具有以下配置的 Unpivot 转换。

Ungroup by : key

逆透视键 - 逆透视列名称 -

scoreIndecesKey
并键入 -
string

enter image description here

未透视的列 - 列名称 -

scoreIndecesValue
和类型 -
string

enter image description here

它将给出如下输出。

enter image description here

在这里,使用另一个派生列将您的列转换为所需的数据类型。

scoreIndecesKey - toInteger(scoreIndecesKey)
scoreIndecesValue - toDouble(scoreIndecesValue)

enter image description here

现在,它将把列转换为所需的数据类型。使用另一个选择转换删除额外的

key
列,它将给出所需的输出。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.