我正在尝试使用 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 |
如何解决这个问题?
我按照这个问题中提供的步骤进行操作,但它与我的用例不匹配。
您可以在数据流中使用Unpivot转换来实现您的要求。
获取所需的
scoreIndeces
对象作为列后,使用 选择转换 基于规则的映射 将内部键提取为列。在选择转换中,选择 添加映射-> 基于规则的映射,并将 scoreIndeces
对象指定为层次结构级别,如下所示。这会将所有内部键提取为列和行。
要取消透视,它需要一个分组列。因此,使用派生列转换并创建一个新列
key
并给出任何字符串值。此外,使用派生列列模式选项将所有列值转换为字符串。单击添加并选择列模式并给出以下表达式。
然后,使用具有以下配置的 Unpivot 转换。
Ungroup by : key
逆透视键 - 逆透视列名称 -
scoreIndecesKey
并键入 - string
未透视的列 - 列名称 -
scoreIndecesValue
和类型 - string
它将给出如下输出。
在这里,使用另一个派生列将您的列转换为所需的数据类型。
scoreIndecesKey - toInteger(scoreIndecesKey)
scoreIndecesValue - toDouble(scoreIndecesValue)
现在,它将把列转换为所需的数据类型。使用另一个选择转换删除额外的
key
列,它将给出所需的输出。