

# 使用“分解数组或映射到行”转换
<a name="transforms-explode-array"></a>

 **分解**转换允许您将嵌套结构中的值提取到更易于操作的单个行中。对于数组，转换将为数组的每个值生成一行，复制该行中其他列的值。对于映射，转换将为每个条目生成一行，键和值为列，再加上该行中的任何其他列。

 例如，如果我们有这个数据集，它有一个包含多个值的“类别”数组列。


| product\_id | 类别 | 
| --- | --- | 
| 1 | [运动、冬季] | 
| 2 | [花园、工具] | 
| 3 | [电子游戏] | 
| 4 | [游戏、棋盘游戏、社交] | 
| 5 | [] | 

 如果您将“类别”列分解为具有相同名称的列，则将覆盖该列。您可以选择要包含 NULL 以获得以下内容（出于说明目的排序）：


| product\_id | 类别 | 
| --- | --- | 
| 1 | 运动 | 
| 1 | 冬天 | 
| 2 | 花园 | 
| 2 | 工具 | 
| 3 | 电子游戏 | 
| 4 | 游戏 | 
| 4 | 棋盘游戏 | 
| 4 | 社交 | 
| 5 |  | 

**要添加“分解数组”或“映射成行”转换，请执行以下操作：**

1. 打开资源面板，然后选择**分解数组或映射到行**将新转换添加到作业图。添加节点时选择的节点将是其父节点。

1. （可选）在**节点属性**选项卡上，输入任务图中节点的名称。如果尚未选择父节点，请从 Node parents (父节点) 列表中选择一个节点，用作转换的输入源。

1. 在**转换**选项卡上，选择要分解的列（它必须是数组或地图类型）。然后，如果要分解地图，则为数组中的项目输入列的名称，或者为键和值输入列的名称。

1. （可选）在**转换**选项卡上，默认情况下，如果要分解的列为 NULL 或结构为空，则在分解的数据集中将省略该列。如果要保留该行（将新列设置为 NULL），请选中“包含 NULL”。  
![屏幕截图显示了“分解数组或映射到行”转换的“转换”选项卡。](http://docs.aws.amazon.com/zh_cn/glue/latest/dg/images/transforms-explode-array-transform-tab.png)