

# Transformación de datos con transformaciones administradas de AWS Glue
<a name="edit-jobs-transforms"></a>

 AWS Glue Studio ofrece dos tipos de transformaciones: 
+  **Transformaciones nativas de AWS Glue**: disponibles para todos los usuarios y administradas por AWS Glue. 
+  **Transformaciones visuales personalizadas**: le permiten cargar sus propias transformaciones para usarlas en AWS Glue Studio 

## Nodos de transformación de datos administrados por AWS Glue
<a name="edit-jobs-transforms-glue-managed"></a>

AWS Glue Studio proporciona un conjunto de transformaciones integradas que puede utilizar para procesar los datos. Sus datos pasan de un nodo en el diagrama de trabajo a otro en una estructura de datos denominada `DynamicFrame`, que es una extensión de un `DataFrame` de Apache Spark SQL.

En el diagrama rellenado previamente para un trabajo, entre el origen de datos y los nodos de destino de datos se encuentra el nodo de transformación **Cambiar esquema**. Puede configurar este nodo de transformación para modificar los datos o puede utilizar transformaciones adicionales. 

 dispone de las siguientes transformaciones integradas AWS Glue Studio:
+ **[ChangeSchema](transforms-configure-applymapping.md)**: asigne claves de propiedad de datos en el origen de datos a claves de propiedad de datos en el destino de datos. Puede cambiar el nombre de las claves, modificar los tipos de datos de las claves y elegir las claves que desea descartar del conjunto de datos.
+ **[SelectFields](transforms-configure-select-fields.md)** (Seleccionar campos): elija las claves de propiedad de datos que desee conservar.
+ **[DropFields](transforms-configure-drop-fields.md)** (Descartar campos): elija las claves de propiedad de datos que desee descartar.
+ **[RenameField](transforms-configure-rename-field.md)** (Renombrar campos): cambie el nombre de una sola clave de propiedad de datos.
+ **[Spigot](transforms-configure-spigot.md)**: escriba muestras de los datos en un bucket de Amazon S3.
+ **[Join](transforms-configure-join.md)** (Combinar): combine dos conjuntos de datos en uno mediante una frase de comparación en las claves de propiedad de datos especificadas. Puede utilizar combinaciones interna, externa, izquierda, derecha, semicombinación izquierda y anticombinación izquierda.
+ **[Unión](transforms-configure-union.md)**: combine filas de más de un origen de datos que tengan el mismo esquema.
+ **[SplitFields](transforms-configure-split-fields.md)** (Dividir campos): divida claves de propiedad de datos en dos `DynamicFrames`. La salida es una recopilación de `DynamicFrames`: uno con las claves de propiedad de datos seleccionadas y el otro con las claves de propiedad de datos restantes. 
+ **[SelectFromCollection](transforms-selectfromcollection-overview.md)** (Seleccionar desde recopilación): elija un `DynamicFrame` de una recopilación de `DynamicFrames`. El resultado es el seleccionado `DynamicFrame`.
+ **[FillMissingValues](transforms-configure-fmv.md)** (Completar valores faltantes): para localizar registros en el conjunto de datos que tienen valores faltantes y agregar un nuevo campo con un valor sugerido determinado por imputación
+ **[Filter](transforms-filter.md)** (Filtro): divida un conjunto de datos en dos, en función de una condición de filtro.
+  **[Eliminar campos nulos](transforms-dropnull-fields.md)**: elimina columnas del conjunto de datos si todos los valores de la columna son ‘nulos’. 
+  **[Eliminar duplicados](transforms-drop-duplicates.md)**: elimina las filas del origen de datos. Para ello, elija hacer coincidir filas enteras o especificar claves. 
+ **[SQL](transforms-sql.md)**: ingrese el código SparkSQL en un campo de entrada de texto para utilizar una consulta SQL a fin de transformar los datos. La salida es un único `DynamicFrame`. 
+  **[Agregación](transforms-aggregate-fields.md)**: realiza un cálculo (como el promedio, la suma, el mínimo o el máximo) en los campos y filas seleccionados y crea un nuevo campo con los valores calculados recientes. 
+ **[Aplanar](transforms-flatten.md)**: extrae los campos dentro de las estructuras en los campos de nivel superior.
+ **[UUID](transforms-uuid.md)**: agrega una columna con un Identificador único universal (UUID) para cada fila.
+ **[Identificador](transforms-identifier.md)**: agrega una columna con un identificador numérico para cada fila.
+ **[Para agregar una marca temporal](transforms-to-timestamp.md)**: convierta una columna al tipo de marca temporal.
+ **[Formato de marca temporal](transforms-format-timestamp.md)**: convierte una columna de marca temporal en una cadena formateada.
+ **[Transformación de Enrutador condicional](transforms-conditional-router.md)**: aplique múltiples condiciones a los datos entrantes. Cada fila de los datos entrantes se evalúa mediante una condición de filtro de grupo y se procesa en su grupo correspondiente. 
+  **[Transformación de concatenar columnas](transforms-concatenate-columns.md)**: cree una nueva columna de cadena. Para ello, utilice los valores de otras columnas con un espaciador opcional. 
+  **[Transformación de cadena dividida](transforms-split-string.md)**: divida una cadena en una matriz de tokens. Para ello, utilice una expresión regular para definir cómo se realiza la división. 
+  **[Transformación de matriz a columnas](transforms-array-to-columns.md)**: extraiga algunos o todos los elementos de una columna de tipo matriz en nuevas columnas. 
+  **[Agregar la transformación de marca de tiempo actual](transforms-add-current-timestamp.md)**: marque las filas con la hora a la que se procesaron los datos. Esto resulta útil para fines de auditoría o para realizar un seguimiento de la latencia en la canalización de datos. 
+  **[Transformación de filas dinámicas en columnas](transforms-pivot-rows-to-columns.md)**: agregue una columna numérica. Para ello, rote los valores únicos en las columnas seleccionadas para convertirlas en columnas nuevas. Si se seleccionan varias columnas, los valores se concatenan para dar nombre a las nuevas columnas. 
+  **[Transformación de columnas a filas](transforms-unpivot-columns-to-rows.md)**: convierta columnas en valores de nuevas columnas. Para ello, genere una fila para cada valor único. 
+  **[Transformación de procesamiento de equilibrio automático](transforms-autobalance-processing.md)**: redistribuya mejor los datos entre los trabajadores. Esto es útil cuando los datos están desequilibrados o cuando provienen del origen y no permiten un procesamiento paralelo suficiente. 
+  **[Transformación de columnas derivadas](transforms-derived-column.md)**: defina una nueva columna basándose en una fórmula matemática o expresión SQL en la que pueda utilizar otras columnas de los datos, así como constantes y literales. 
+  **[Transformación de búsqueda](transforms-lookup.md)**: agregue columnas de una tabla de catálogo definida cuando las claves coincidan con las columnas de búsqueda definidas en los datos. 
+  **[Transformación de matriz o mapa en filas](transforms-explode-array.md)**: extraiga valores de una estructura anidada en filas individuales que sean más fáciles de manipular. 
+  **[Transformación de coincidencia de registros](transforms-record-matching.md)**: invoque una transformación de clasificación de datos de machine learning de Record Matching existente. 
+  **[Transformación de eliminar filas nulas](transforms-remove-null-rows.md)**: elimine del conjunto de datos las filas que tengan todas las columnas nulas o vacías. 
+  **[Transformación de analizar columnas JSON](transforms-parse-json-column.md)**: analice una columna de cadena que contenga datos de JSON y conviértala en una columna de estructura o matriz, en función de si el JSON es un objeto o una matriz, respectivamente. 
+  **[Transformación de extraer la ruta JSON](transforms-extract-json-path.md)**: extraiga nuevas columnas de una columna de cadena JSON. 
+  **[Extraer fragmentos de cadenas de una expresión regular](transforms-regex-extractor.md)**: extraiga fragmentos de cadenas mediante una expresión regular y cree una nueva columna a partir de ella o varias columnas si utiliza grupos de expresiones regulares. 
+ **[Custom transform](transforms-custom.md)** (Transformación personalizada): ingrese un código en un campo de entrada de texto para utilizar transformaciones personalizadas. La salida es una recopilación de `DynamicFrames`. 

# Uso de una receta de preparación de datos en AWS Glue Studio
<a name="glue-studio-data-preparation"></a>

 La transformación de la **receta de preparación de datos** le permite crear una receta de preparación de datos desde cero mediante una interfaz de creación con estilo de cuadrícula interactiva. También le permite importar una receta de AWS Glue DataBrew existente y luego editarla en AWS Glue Studio. 

 El nodo **Receta de preparación de datos** está disponible en el panel de Recursos. Puede conectar el nodo **Receta de preparación de datos** a otro nodo del flujo de trabajo visual, ya sea un nodo de origen de datos u otro nodo de transformación. Tras elegir una receta de AWS Glue DataBrew y una versión, los pasos aplicados en la receta aparecen visibles en la pestaña de propiedades del nodo. 

## Requisitos previos
<a name="glue-studio-databrew-prerequisites"></a>
+  Si va a importar una receta de AWS Glue DataBrew, debe tener los permisos de IAM necesarios, tal y como se describe en [Importación de una receta de AWS Glue DataBrew en AWS Glue Studio](glue-studio-data-preparation-import-recipe.md). 
+  Debe crearse una sesión de vista previa de datos. 

## Limitaciones
<a name="glue-studio-databrew-limitations"></a>
+  Las recetas de AWS Glue DataBrew solo se admiten en las [regiones comerciales de DataBrew](https://docs.aws.amazon.com/general/latest/gr/databrew.html). 
+  No todas las recetas de AWS Glue DataBrew son compatibles con AWS Glue. Algunas recetas no se podrán ejecutar en AWS Glue Studio. 
  +  No se admiten recetas con transformaciones `UNION` y `JOIN`. Sin embargo, AWS Glue Studio ya cuenta con los nodos de transformación "Join" y "Union", que se pueden utilizar antes o después de un nodo de **receta de preparación de datos**. 
+  Los nodos de **Receta de preparación de datos** son compatibles con los trabajos que comiencen con la versión 4.0 de AWS Glue. Esta versión se seleccionará automáticamente después de agregar un nodo **Receta de preparación de datos** al trabajo. 
+  Los nodos de **Receta de preparación de datos** requieren Python. Esto se establece automáticamente cuando se agrega el nodo de **Receta de preparación de datos** al trabajo. 
+  Al agregar un nuevo nodo de **receta de preparación de datos** al gráfico visual, se reiniciará automáticamente la sesión de vista previa de datos con las bibliotecas correctas para usar el nodo de **receta de preparación de datos**. 
+  No se admiten las siguientes transformaciones para la importación o edición en un nodo de **receta de preparación de datos**: `GROUP_BY`, `PIVOT`, `UNPIVOT` y `TRANSPOSE`. 

## Características adicionales
<a name="glue-studio-data-preparation-recipe-transform-features"></a>

 Cuando haya seleccionado la transformación de la **receta de preparación de datos**, podrá realizar acciones adicionales después de elegir **Crear receta**. 
+  Agregar paso: puede agregar pasos adicionales a una receta según sea necesario seleccionando el icono de agregar paso o utilizar la barra de herramientas del panel de vista previa seleccionando una acción.   
![\[En la captura de pantalla se muestra el icono de Agregar receta.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/add-recipe-icon.png)  
![\[En la captura de pantalla se muestra el icono de Agregar receta.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-toolbar.png)
+  Importar receta: seleccione **Más** y luego **Importar receta** para usarla en el trabajo de AWS Glue Studio.   
![\[En la captura de pantalla se muestra el icono de Más.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-recipe-node-more-icon.png)  
![\[En la captura de pantalla se muestra el icono de Más.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-recipe-node-more-features.png)
+  Descargar como YAML: seleccione **Más** y luego **Descargar como YAML** para descargar la receta y guardarla fuera de AWS Glue Studio. 
+  Descargar como JSON: seleccione **Más** y luego **Descargar como JSON** para descargar la receta y guardarla fuera de AWS Glue Studio. 
+  Deshacer y rehacer los pasos de la receta: puede deshacer y rehacer los pasos de la receta en el panel de vista previa cuando trabaje con los datos de la cuadrícula.   
![\[En la captura de pantalla se muestra el icono de Más.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)

# Creación y ejecución de recetas de preparación de datos en un trabajo de AWS Glue de ETL visual
<a name="glue-studio-data-preparation-recipe-transform-tutorial"></a>

 En este escenario, puede crear recetas de preparación de datos sin tener que crearlas primero en DataBrew. Antes de empezar a crear recetas, debe: 
+  Tener una sesión de vista previa de datos activa en ejecución. Cuando la sesión de vista previa de datos esté LISTA, la opción **Crear receta** se activará y podrá empezar a crear o editar la receta.   
![\[En la captura de pantalla se muestra la sesión de vista previa de datos como finalizada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-recipe-data-preview-complete.png)
+  Asegúrese de que la opción **Importar automáticamente bibliotecas de Glue** esté habilitada.   
![\[En la captura de pantalla se muestra la opción Importar automáticamente bibliotecas de Glue habilitada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-recipe-automatically-import-glue-libraries.png)

   Para ello, seleccione el icono con forma de engranaje en el panel de vista previa de datos.   
![\[En la captura de pantalla se muestra la opción Importar automáticamente bibliotecas de Glue habilitada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preview-preferences.png)

**Creación de una receta de preparación de datos en AWS Glue Studio:**

1.  Agregue la transformación de la **receta de preparación de datos** a su lienzo de trabajo. La transformación debe estar conectada a un nodo principal del origen de datos. Al agregar el nodo de la **receta de preparación de datos**, el nodo se reiniciará con las bibliotecas adecuadas y verá que se está preparando el marco de datos.   
![\[En la captura de pantalla se muestra la carga del marco de datos tras agregar la receta de preparación de datos.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-preparing-dataframe.png)

1.  Una vez que la sesión de vista previa de datos esté lista, los datos con los pasos aplicados anteriormente aparecerán en la parte inferior de la pantalla. 

1.  Elija **Crear receta**. Esto le permitirá empezar una nueva receta en AWS Glue Studio.   
![\[En la captura de pantalla se muestra el panel Transformar con los campos correspondientes al nombre y al nodo principal, así como la opción de crear una receta.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/data-preparation-recipe-transform-tab-new.png)

1.  En el panel **Transformar**, situado a la derecha del lienzo de trabajo, ingrese un nombre para la receta de preparación de datos. 

1.  En el lado izquierdo, el lienzo se sustituirá por una vista de cuadrícula de los datos. A la derecha, el panel **Transformar** cambiará para mostrarle los pasos de la receta. Seleccione **Agregar paso** para agregar el primer paso a la receta.   
![\[En la captura de pantalla se muestra el panel Transformar después de elegir Agregar paso. Al elegir una columna, las opciones cambiarán de forma dinámica. Puede elegir ordenar, realizar una acción en la columna y filtrar los valores.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-preview-data-transform-panel.png)

1.  En el panel **Transformar**, puede elegir ordenar, realizar una acción en la columna y filtrar los valores. Por ejemplo, elija **Cambiar el nombre de la columna**.   
![\[En la captura de pantalla se muestra el panel Transformar después de elegir Agregar paso. Al elegir una columna, las opciones cambiarán de forma dinámica. Puede elegir ordenar, realizar una acción en la columna y filtrar los valores.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-add-step.png)

1.  En el panel Transformar de la derecha, las opciones para cambiar el nombre de una columna permiten elegir la columna de origen a la que se va a cambiar el nombre e ingresar el nombre de la nueva columna. Una vez que lo haya hecho, elija **Aplicar**. 

    Puede previsualizar cada paso, deshacer un paso y reordenar los pasos, así como utilizar cualquiera de los iconos de acción, como Filtrar, Ordenar, Dividir, Combinar, etc. Al realizar acciones en la cuadrícula de datos, los pasos se agregan a la receta en el panel Transformar.   
![\[En la captura de pantalla se muestra la cuadrícula de vista previa de datos con la barra de herramientas resaltada. Puede aplicar una acción con cualquiera de las herramientas y se agregará a la receta en el panel Transformar de la derecha.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-preview-data-grid.png)

    Si necesita hacer algún cambio, puede hacerlo en el panel de vista previa y así previsualizar el resultado de cada paso, deshacer un paso y reordenar los pasos. Por ejemplo: 
   +  Deshacer o rehacer un paso: para deshacer un paso, seleccione el icono de **Deshacer**. Puede repetir un paso seleccionando el icono de **Rehacer**.   
![\[En la captura de pantalla se muestra el icono de Más.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)
   +  Reordenar el paso: cuando reordene un paso, AWS Glue Studio validará cada paso y le avisará si el paso no es válido. 

1.  Cuando haya aplicado un paso, el panel Transformar le mostrará todos los pasos de la receta. Puede borrar todos los pasos para volver a empezar, agregar más pasos seleccionando el icono de agregar o elegir **Finalizar la creación de la receta**.   
![\[En la captura de pantalla se muestra el panel Transformar con los pasos agregados a la receta. Cuando termine, seleccione Finalizar la creación de la receta o seleccione el icono de agregar para agregar más pasos a la receta.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/author-recipe-done-authoring-recipe.png)

1.  Seleccione **Guardar** en la parte superior derecha de la pantalla. Los pasos de la receta no se guardarán hasta que guarde el trabajo. 

# Importación de una receta de AWS Glue DataBrew en AWS Glue Studio
<a name="glue-studio-data-preparation-import-recipe"></a>

 En AWS Glue DataBrew, una receta es un conjunto de pasos de transformación de datos. Las recetas de AWS Glue DataBrew indican cómo transformar los datos que ya se han leído y no describen dónde y cómo leer datos, ni cómo y dónde escribirlos. Esto se configura en los nodos de origen y destino en AWS Glue Studio. Para obtener más información sobre las recetas, consulte [Creación y uso de recetas de AWS Glue DataBrew](https://docs.aws.amazon.com/databrew/latest/dg/recipes.html). 

 Para usar recetas de AWS Glue DataBrew en AWS Glue Studio, comience por crear recetas en AWS Glue DataBrew. Puede omitir este paso si ya dispone de las recetas que desea utilizar. 

## Permisos de IAM para AWS Glue DataBrew
<a name="glue-studio-databrew-permissions"></a>

 En este tema se proporciona información para ayudarle a comprender las acciones y los recursos que un administrador de IAM puede utilizar en una política de AWS Identity and Access Management (IAM) para la transformación de la receta de preparación de datos. 

 Para obtener información adicional sobre la seguridad en AWS Glue, consulte [Gestión de acceso](https://docs.aws.amazon.com/glue/latest/dg/security.html). 

**nota**  
 En la siguiente tabla, se enumeran los permisos que necesita un usuario para importar una receta de AWS Glue DataBrew existente. 


**Acciones de transformación de recetas de preparación de datos**  

| Action | Descripción | 
| --- | --- | 
| databrew:ListRecipes | Concede permiso para recuperar las recetas de AWS Glue DataBrew. | 
| databrew:ListRecipeVersions | Concede permiso para recuperar las versiones de una receta de AWS Glue DataBrew. | 
| databrew:DescribeRecipe | Concede permiso para recuperar la descripción de una receta de AWS Glue DataBrew. | 



 El rol que utilice para acceder a esta funcionalidad debe tener una política que permita varias acciones de AWS Glue DataBrew. Para ello, puede utilizar la política `AWSGlueConsoleFullAccess` que incluye las acciones necesarias o agregar la siguiente política integrada a su rol: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "databrew:ListRecipes",
        "databrew:ListRecipeVersions",
        "databrew:DescribeRecipe"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------



 Para utilizar la transformación de la receta de preparación de datos, debe agregar la acción de `IAM:PassRole` a la política de permisos. 


**Permisos necesarios adicionales**  

| Action | Descripción | 
| --- | --- | 
| iam:PassRole | Otorga permiso a IAM para que el usuario pueda pasar las funciones aprobadas. | 

Sin estos permisos, se produce el siguiente error:

```
"errorCode": "AccessDenied"
"errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not 
authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole 
because no identity-based policy allows the iam:PassRole action"
```



## Importación de una receta de AWS Glue DataBrew
<a name="glue-studio-databrew-import-steps"></a>

**Importación de una receta de AWS Glue DataBrew y utilización en AWS Glue Studio:**

 Si ya tiene un nodo de **receta de preparación de datos** y quiere editar los pasos de la receta directamente en AWS Glue Studio, tendrá que importar los pasos de la receta a su trabajo de AWS Glue Studio. 

1.  Inicie un trabajo de AWS Glue en AWS Glue Studio con un origen de datos. 

1.  Agregue el nodo **Receta de preparación de datos** al lienzo de trabajo.   
![\[La captura de pantalla muestra el modal de nodo Agregar con la receta de preparación de datos disponible para su selección.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/glue-add-node-data-preparation-recipe.png)

1.  En el panel Transformar, escriba un nombre para la receta. 

1.  Para elegir uno o más nodos principales, seleccione los nodos disponibles en el lienzo en la lista desplegable. 

1.  Elija **Crear receta**. Si **Crear receta** está en gris, no estará disponible hasta que se hayan seleccionado los nodos principales y se haya completado una sesión de vista previa de datos.   
![\[Author Data Preparation Recipe form with name field and node parents selection dropdown.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/glue-author-data-preparation-recipe.png)

1.  El marco de datos se carga y muestra información detallada sobre los datos de origen. 

    Seleccione el icono de **más acciones** y elija **Importar receta**.   
![\[Data preparation interface showing "Build your Recipe" with an "Add step" button.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/glue-dataframe-import-recipe.png)

1.  Use el asistente de importación de recetas para completar los pasos. En el paso 1, busque su receta, selecciónela y elija **Siguiente**.   
![\[Import recipe interface showing two recipes, with one selected for import.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/import-recipe-step-1.png)

1.  En el paso 2, elija sus opciones de importación. Puede agregar una nueva receta a una receta existente o sobrescribir una receta existente. Elija **Siguiente**.   
![\[Import recipe interface showing selected recipe, version, and two imported steps.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/import-recipe-step-2.png)

1.  En el paso 3, valide los pasos de la receta. Una vez que haya importado la receta de AWS Glue DataBrew, podrá editarla directamente en AWS Glue Studio.   
![\[Recipe import interface showing two steps and a validation progress indicator.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/import-recipe-step-3.png)  
![\[Import recipe interface showing validated steps for sorting and formatting data.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/import-recipe-step-3-validated-2.png)

1.  Después de esto, los pasos se importarán como parte del trabajo de AWS Glue. Realice los cambios de configuración necesarios en la pestaña **Detalles del trabajo**, como asignarle un nombre al trabajo y ajustar la capacidad asignada según sea necesario. Seleccione **Guardar** para guardar el trabajo y la receta. 
**nota**  
 JOIN, UNION, GROUP\$1BY, PIVOT, UNPIVOT y TRANSPOSE no son compatibles con la importación de recetas ni estarán disponibles en el modo de creación de recetas. 

1.  Opcionalmente, puede terminar de crear el trabajo agregando otros nodos de transformación según sea necesario y agregando los nodos de destino de datos. 

    Si reordena los pasos después de importar una receta, AWS Glue realiza una validación de esos pasos. Por ejemplo, si cambiara el nombre de una columna y, a continuación, la eliminara, y moviera el paso de eliminación a la parte superior, el paso de cambio de nombre no sería válido. A continuación, puede editar los pasos para corregir el error de validación. 

# Migración desde AWS Glue DataBrew a AWS Glue Studio
<a name="databrew-migration-to-glue-studio"></a>

 Si tiene recetas en AWS Glue DataBrew, use la siguiente lista de verificación para migrar sus recetas a AWS Glue Studio. 


| Si desea... | Haga esto | 
| --- | --- | 
|  Permitir que los usuarios recuperen recetas de AWS Glue DataBrew, versiones de recetas y descripciones de recetas.  |  Agregue permisos de IAM a una política que le permita a su rol acceder a las acciones necesarias. Consulte [Permisos de IAM para AWS Glue DataBrew](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-permissions).  | 
|  Importar una receta de AWS Glue DataBrew existente a AWS Glue Studio.  |  Siga los pasos de [Importación de una receta de AWS Glue DataBrew](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-import-steps).  | 
|  Importar una receta con JOIN y UNION.  |  No se admiten recetas con transformaciones UNION ni JOIN. Use las transformaciones Join y Union en AWS Glue Studio antes o después de un nodo de receta de preparación de datos.  | 

# Uso de Cambiar esquema para reasignar claves de propiedades de datos
<a name="transforms-configure-applymapping"></a>

Una transformación *Cambiar esquema* vuelve a mapear las claves de propiedad de datos de origen en la configuración deseada para los datos de destino. En un nodo de transformación de Cambiar esquema, puede:
+ Cambiar el nombre de varias claves de propiedad de datos.
+ Cambiar el tipo de datos de las claves de propiedad de datos, si se soporta el nuevo tipo de datos y existe una ruta de transformación entre los dos tipos de datos.
+ Elegir un subconjunto de claves de propiedad de datos al indicar las claves de propiedad de datos que desea descartar.

Puede agregar nodos *Cambiar esquema* adicionales al diagrama de trabajo según sea necesario, por ejemplo, para modificar orígenes de datos adicionales o luego de una transformación *Join*. 

## Uso de Cambiar esquema con un tipo de datos decimal
<a name="transforms-configure-applymapping-decimal-datatype"></a>

 Cuando se utiliza la transformación **Cambiar esquema** con un tipo de datos decimal, la transformación **Cambiar esquema** modifica la precisión al valor predeterminado de (10,2). Para modificarlo y establecer la precisión para su caso de uso, puede usar la transformación **Consulta SQL** y moldear las columnas con una precisión específica. 

 Por ejemplo, si tiene una columna de entrada llamada “DecimalCol” de tipo Decimal y desea reasignarla a una columna de salida llamada “OutputDecimalCol” con una precisión específica de (18,6), debería: 

1.  Agregar una transformación **Consulta SQL** posterior a la transformación **Cambiar esquema**. 

1.  En la transformación **Consulta SQL**, utilice una consulta SQL para convertir la columna reasignada con la precisión deseada. La consulta SQL debería tener el siguiente aspecto: 

   ```
   SELECT col1, col2, CAST(DecimalCol AS DECIMAL(18,6)) AS OutputDecimalCol
   FROM __THIS__
   ```

    En la consulta SQL anterior: 
   +  “col1” y “col2” son otras columnas de sus datos que desea revisar sin modificarlas. 
   +  “DecimalCol” es el nombre de la columna original de los datos de entrada. 
   +  “CAST(DecimalCol AS DECIMAL(18,6))” convierte “DecimalCol” en un tipo decimal con una precisión de 18 dígitos y 6 decimales. 
   +  “AS OutputDecimalCol” cambia el nombre de la columna convertida a “OutputDecimalCol”. 

 Al utilizar la transformación **Consulta SQL**, puede anular la precisión predeterminada establecida por la transformación **Cambiar esquema** y convertir explícitamente las columnas decimales con la precisión deseada. Este enfoque le permite aprovechar la transformación **Cambiar esquema** para cambiar el nombre y reestructurar los datos y, al mismo tiempo, administrar los requisitos de precisión de las columnas decimales durante la posterior transformación **Consulta SQL**. 

## Agregación de un nodo de transformación Cambiar esquema al diagrama de trabajo
<a name="transforms-configure-applymapping-add-to-job"></a>

**nota**  
La transformación **Cambiar esquema** no distingue mayúsculas de minúsculas.

**Para agregar un nodo de transformación de Cambiar esquema al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **Change Schema** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña Propiedades del nodo, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transformación** en el panel de detalles del nodo.

1. Modifique el esquema de entrada:
   + Para cambiar el nombre de una clave de propiedad de datos, escriba el nuevo nombre de la clave en el campo **Target key (Clave de destino)**.
   + Para cambiar el tipo de datos de una clave de propiedad de datos, elija el tipo de datos nuevo para la clave de la lista **Data type (Tipo de datos)**.
   + Para eliminar una clave de propiedad de datos del esquema de destino, seleccione la casilla **Drop (Descartar)** para esa clave.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Uso de Eliminar duplicados
<a name="transforms-drop-duplicates"></a>

 La transformación Eliminar duplicados elimina las filas del origen de datos ofreciéndole dos opciones. Puede eliminar la fila duplicada que sea completamente igual o elegir los campos que desee que coincidan y eliminar solo las filas en función de los campos que haya elegido. 

 Por ejemplo, en este conjunto de datos, tiene filas duplicadas en las que todos los valores de algunas filas son exactamente iguales a los de otra fila y algunos de los valores de las filas son iguales o diferentes. 


| Fila | Nombre | Correo electrónico | Edad | Estado | Nota | 
| --- | --- | --- | --- | --- | --- | 
| 1 | Alegría | alegría@gmail | 33 | NY |  | 
| 2 | Tim | tim@gmail | 45 | OH |  | 
| 3 | Rosa | rosa@gmail | 23 | NJ |  | 
| 4 | Tim | tim@gmail | 42 | OH |  | 
| 5 | Rosa | rosa@gmail | 23 | NJ |  | 
| 6 | Tim | tim@gmail | 42 | OH | se trata de una fila duplicada y coincide completamente con todos los valores de la fila \$14 | 
| 7 | Rosa | rosa@gmail | 23 | NJ | Se trata de una fila duplicada y coincide completamente con todos los valores de la fila \$15 | 

 Si opta por hacer coincidir filas enteras, las filas 6 y 7 se eliminarán del conjunto de datos. El conjunto de datos ahora es el siguiente: 


| Fila | Nombre | Correo electrónico | Edad | Estado | 
| --- | --- | --- | --- | --- | 
| 1 | Alegría | alegría@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rosa | rosa@gmail | 23 | NJ | 
| 4 | Tim | tim@gmail | 42 | OH | 
| 5 | Rosa | rosa@gmail | 23 | NJ | 

 Si opta por especificar las claves, puede optar por eliminar las filas que coincidan con las palabras “nombre” y “correo electrónico”. Esto permite controlar mejor qué es una “fila duplicada” para el conjunto de datos. Al especificar “nombre” y “correo electrónico”, el conjunto de datos ahora es el siguiente: 


| Fila | Nombre | Correo electrónico | Edad | Estado | 
| --- | --- | --- | --- | --- | 
| 1 | Alegría | alegría@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rosa | rosa@gmail | 23 | NJ | 



 Algunas cosas a tener en cuenta: 
+  Para que las filas se reconozcan como duplicadas, los valores distinguen entre mayúsculas y minúsculas. Todos los valores de las filas deben tener las mismas mayúsculas y minúsculas; esto se aplica a cualquier opción que elija (hacer coincidir filas enteras o Especificar claves). 
+  Todos los valores se leen como cadenas. 
+  La transformación **Eliminar duplicados** utiliza el comando dropDuplicates de Spark. 
+  Cuando se utiliza la transformación **Eliminar duplicados**, la primera fila se mantiene y las demás filas se eliminan. 
+  La transformación **Eliminar duplicados** no cambia el esquema del marco de datos. Si decide especificar claves, todos los campos se mantienen en el marco de datos resultante. 

# Uso de SelectFields (Seleccionar campos) para eliminar la mayoría de las claves de propiedad de datos
<a name="transforms-configure-select-fields"></a>

Puede crear un subconjunto de claves de propiedad de datos a partir del conjunto de datos mediante la transformación *Seleccionar campos*. Indique qué claves de propiedad de datos desea conservar y el resto se eliminan del conjunto de datos.

**nota**  
La transformación *Seleccionar campos* distingue entre mayúsculas y minúsculas. Use *ApplyMapping (Aplicar mapeo)* si necesita una forma que no distinga entre mayúsculas y minúsculas para seleccionar campos.

**Para agregar un nodo de transformación Seleccionar campos al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **SelectFields** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)** en el panel de detalles del nodo.

1. En el encabezado **SelectFields (Seleccionar campos)** elija las claves de propiedad de datos en el conjunto de datos que desea conservar. Las claves de propiedad de datos no seleccionadas se descartan del conjunto de datos.

   También puede seleccionar la casilla junto al encabezado de la columna **Field (Campo)** para elegir automáticamente todas las claves de propiedad de datos en el conjunto de datos. Luego, puede anular la selección de claves de propiedad de datos individuales para eliminarlas del conjunto de datos.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Uso de DropFields (Descartar campos) para mantener la mayoría de las claves de propiedad
<a name="transforms-configure-drop-fields"></a>

Puede crear un subconjunto de claves de propiedad de datos a partir del conjunto de datos mediante la transformación *Descartar campos*. Indique qué claves de propiedad de datos desea eliminar del conjunto de datos y el resto de las claves se conservan.

**nota**  
La transformación *Descartar campos* distingue entre mayúsculas y minúsculas. Use *Cambiar esquema* si necesita una forma insensible a mayúsculas y minúsculas para seleccionar campos.

**Para agregar un nodo de transformación Descartar campos al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **DropFields** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)** en el panel de detalles del nodo.

1. En el encabezado **DropFields (Descartar campos)**, elija las claves de propiedad de datos que desea descartar del origen de datos.

   También puede seleccionar la casilla junto al encabezado de la columna **Field (Campo)** para elegir automáticamente todas las claves de propiedad de datos en el conjunto de datos. Luego, puede anular la selección de claves de propiedad de datos individuales para que se conserven en el conjunto de datos.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Cambio de nombre de un campo en el conjunto de datos
<a name="transforms-configure-rename-field"></a>

Puede utilizar la transformación *RenameField (Renombrar campo)* para cambiar el nombre de una clave de propiedad individual en el conjunto de datos. 

**nota**  
La transformación *Renombrar campo* distingue entre mayúsculas y minúsculas. Use *ApplyMapping (Aplicar mapeo)* si necesita una transformación que no distinga entre mayúsculas y minúsculas.

**sugerencia**  
Si utiliza la transformación *Cambiar Esquema*, puede cambiar el nombre de varias claves de propiedad de datos en el conjunto de datos con una única transformación.

**Para agregar un nodo de transformación Renombrar campo al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **RenameField** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)**.

1. En el encabezado **Data field (Campo de datos)**, elija una clave de propiedad de los datos de origen y, a continuación, escriba un nuevo nombre en el cuadro **New field name (Nombre de campo nuevo)**. 

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Uso de Spigot para tomar muestras del conjunto de datos
<a name="transforms-configure-spigot"></a>

Para probar las transformaciones realizadas por el trabajo, es posible que desee obtener una muestra de los datos para comprobar que la transformación funciona según lo previsto. La transformación *Spigot* escribe un subconjunto de registros del conjunto de datos en un archivo JSON en un bucket de Amazon S3. El método de muestreo de datos puede ser un número especificado de registros del principio del archivo o un factor de probabilidad utilizado para elegir los registros.

**Para agregar un nodo de transformación Spigot al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **Spigot** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)** en el panel de detalles del nodo.

1. Escriba una ruta de Amazon S3 o elija **Browse S3 (Examinar S3)** para elegir una ubicación en Amazon S3. Esta es la ubicación donde el trabajo escribe el archivo JSON que contiene la muestra de datos.

1. Ingrese la información para el método de muestreo. Puede especificar un valor para **Number of records (Número de registros)** que se escribirá desde el principio del conjunto de datos y un **Probability threshold (Umbral de probabilidad)** (que se ingresa como un valor decimal con un valor máximo de 1) para seleccionar cualquier registro determinado. 

   Por ejemplo, para escribir los primeros 50 registros del conjunto de datos, debe establecer **Number of records** en 50 y **Probability threshold** en 1 (100 %).

# Combinación de conjuntos de datos
<a name="transforms-configure-join"></a>

La transformación *Join (Combinación)* le permite combinar dos conjuntos de datos en uno. Especifique los nombres de clave en el esquema de cada conjunto de datos que desea comparar. El `DynamicFrame` de salida contiene las filas donde las claves cumplen la condición de combinación. Las filas de cada conjunto de datos que cumplen con la condición de combinación se combinan en una sola fila en el `DynamicFrame` de salida que contiene todas las columnas encontradas en cualquiera de los conjuntos de datos.

**Para agregar un nodo de transformación de combinación al diagrama de trabajo**

1. Si sólo hay un origen de datos disponible, debe agregar un nuevo nodo de origen de datos al diagrama de trabajo.

1. Elija uno de los nodos de origen para la combinación. Abra el panel de recursos y, a continuación, elija **Unir** para agregar una nueva transformación al diagrama de trabajo.

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo.

1. En la pestaña **Node properties (Propiedades del nodo)**, en el encabezado **Node parents (Nodos principales)**, agregue un nodo principal para que haya dos conjuntos de datos que proporcionen entradas para la combinación. El principal puede ser un nodo de origen de datos o un nodo de transformación. 
**nota**  
Una combinación sólo puede tener dos nodos principales.

1. Elija la pestaña **Transform (Transformación)**.

   Si aparece un mensaje que indica que hay nombres de clave conflictivos, puede:
   + Seleccionar **Resolve it (Resolver)** para agregar automáticamente un nodo de transformación *ApplyMapping (Aplicar mapeo)* en el diagrama de trabajo. El nodo Aplicar mapeo agrega un prefijo a cualquier clave del conjunto de datos que tenga el mismo nombre que una clave del otro conjunto de datos. Por ejemplo, si utiliza el valor predeterminado de **right**, cualquier clave en el conjunto de datos derecho que tenga el mismo nombre que una clave en el conjunto de datos izquierdo cambiará de nombre a `(right)key name`.
   + Agregue manualmente un nodo de transformación con anterioridad en el diagrama de trabajo para eliminar o cambiar el nombre de las claves en conflicto.

1. Elija el tipo de combinación en la lista **Join type (Tipo de combinación)**. 
   + **Inner join (Combinación interna)**: devuelve una fila con columnas de ambos conjuntos de datos para cada coincidencia basada en la condición de combinación. Las filas que no satisfacen la condición de combinación no se devuelven.
   + **Left join (Combinación izquierda)**: todas las filas del conjunto de datos izquierdo y solo las filas del conjunto de datos derecho que satisfacen la condición de combinación. 
   + **Right join (Combinación derecha)**: todas las filas del conjunto de datos derecho y solo las filas del conjunto de datos izquierdo que satisfacen la condición de combinación.
   + **Outer join (Combinación externa)**: todas las filas de ambos conjuntos de datos.
   + **Left semi join (Semicombinación izquierda)**: todas las filas del conjunto de datos izquierdo que tienen una coincidencia en el conjunto de datos derecho en función de la condición de combinación. 
   + **Left anti join (Anticombinación izquierda)**: todas las filas del conjunto de datos izquierdo que no tienen una coincidencia en el conjunto de datos derecho en función de la condición de combinación. 

1. En la pestaña **Transform (Transformación)**, en el encabezado **Join conditions (Condiciones de combinación)**, elija **Add condition (Agregar condición)**. Elija una clave de propiedad de cada conjunto de datos para comparar. Las claves de propiedad en el lado izquierdo del operador de comparación se conocen como el conjunto de datos izquierdo y las claves de propiedad de la derecha se denominan conjunto de datos derecho. 

   Para condiciones de combinación más complejas, puede agregar claves coincidentes adicionales al seleccionar **Add condition (Agregar condición)** más de una vez. Si agrega una condición por accidente, puede elegir el ícono de eliminación (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/delete-icon-black.png)) para eliminarla.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

Para obtener un ejemplo del esquema de salida de combinación, considere una combinación entre dos conjuntos de datos con las siguientes claves de propiedad:

```
Left: {id, dept, hire_date, salary, employment_status}
Right: {id, first_name, last_name, hire_date, title}
```

La combinación está configurada para que coincida en las claves `id` y `hire_date` mediante el operador de comparación `=`. 

Debido a que ambos conjuntos de datos contienen claves `id` y `hire_date`, debe elegir **Resolve it (Resolver)** para agregar automáticamente el prefijo **right** a las claves del conjunto de datos correcto. 

Las claves en el esquema de salida serían:

```
{id, dept, hire_date, salary, employment_status, 
(right)id, first_name, last_name, (right)hire_date, title}
```

# Uso de Unión para combinar filas
<a name="transforms-configure-union"></a>

 El nodo de transformación Unión se utiliza cuando se desean combinar filas de más de un origen de datos que tienen el mismo esquema. 

 Existen dos tipos de transformaciones de Unión: 

1. ALL: al aplicar ALL, la unión resultante no elimina filas duplicadas.

1. DISTINCT: al aplicar DISTINTO, la unión resultante elimina las filas duplicadas.

 **Uniones versus Combinaciones** 

 Se usa Union para combinar filas. Se utiliza Combinar para combinar columnas. 

**Uso de la transformación Unión en el lienzo de Visual ETL**

1.  Agregue más de un origen de datos para realizar una transformación de unión. Para agregar un origen de datos, abra el panel de recursos y, a continuación, elija el origen de datos en la pestaña Fuentes. Antes de usar la transformación de Unión, debe asegurarse de que todos los orígenes de datos involucradas en la unión tengan el mismo esquema y estructura. 

1.  Si tiene al menos dos orígenes de datos que desee combinar mediante la transformación Unión, cree la transformación Unión al agregarla al lienzo. Abre el panel de recursos en el lienzo y busca “Unión”. También puedes elegir la pestaña Transformaciones del panel de recursos y desplazarte hacia abajo hasta encontrar la transformación de Unión y, a continuación, elegir **Unión.** 

1. Seleccione el nodo Unión en el lienzo de trabajo. En la ventana de propiedades del nodo, elija los nodos principales para conectarse a la transformación de Unión.

1. AWS Glue comprueba la compatibilidad para garantizar que la transformación de Unión se pueda aplicar a todas los orígenes de datos. Si el esquema de los orígenes de datos es el mismo, se permitirá la operación. Si los orígenes de datos no tienen el mismo esquema, aparece un mensaje de error no válido: “Los esquemas de entrada de esta unión no son los mismos. Considere la posibilidad de utilizar ApplyMapping para que coincida con los esquemas”. Para solucionar este problema, selecciona utilizar **ApplyMapping**. 

1. Seleccione el tipo de Unión.

   1. Todas: de forma predeterminada, se selecciona el tipo de unión Todas; esto resultará en filas duplicadas si las hay en la combinación de datos.

   1. Distinto: elija Distinto si desea eliminar las filas duplicadas de la combinación de datos resultante.

# Uso de SplitFields (Dividir campos) para dividir un conjunto de datos en dos
<a name="transforms-configure-split-fields"></a>

La transformación *SplitFields (Dividir campos)* le permite elegir algunas de las claves de propiedad de datos en el conjunto de datos de entrada para ponerlas en un conjunto de datos y colocar las claves no seleccionadas en otro conjunto de datos independiente. La salida de esta transformación es una recopilación de `DynamicFrames`.

**nota**  
Debe utilizar la transformación *SelectFromCollection (Seleccionar desde la recopilación)* para convertir la recopilación de `DynamicFrames` en un solo `DynamicFrame` antes de enviar la salida a una ubicación de destino.

La transformación *Dividir campos* distingue entre mayúsculas y minúsculas. Agregue una transformación *ApplyMapping (Aplicar mapeo)*como nodo principal si necesita nombres de clave de propiedad que no distingan entre mayúsculas y minúsculas.

**Para agregar un nodo de transformación Dividir campos al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **SplitFields** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)**.

1. Elija las claves de propiedad que desea poner en el primer conjunto de datos. Las claves que no elija se colocan en el segundo conjunto de datos.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

1. Configure un nodo de transformación *SelectFromCollection (Seleccionar desde la recopilación)* para procesar los conjuntos de datos resultantes.

# Información general de la transformación *SelectFromCollection*
<a name="transforms-selectfromcollection-overview"></a>

Algunas transformaciones tienen múltiples conjuntos de datos como salida en lugar de un único conjunto de datos, por ejemplo, *Dividir campos*. La transformación *Seleccionar desde recopilación* selecciona un conjunto de datos (`DynamicFrame`) desde una recopilación de conjuntos de datos (una matriz de `DynamicFrames`). El resultado de la transformación es el seleccionado `DynamicFrame`. 

Debe utilizar esta transformación después de utilizar una transformación que crea una recopilación de `DynamicFrames`, por ejemplo:
+ Transformaciones de código personalizado
+ *SplitFields*

Si no agrega un nodo de transformación *Seleccionar desde recopilación* a su diagrama de trabajo después de cualquiera de estas transformaciones, su trabajo arrojará error. 

El nodo principal de esta transformación debe ser un nodo que devuelve una recopilación de `DynamicFrames`. Si elige un nodo principal para este nodo de transformación que devuelve un único `DynamicFrame`, como una transformación *Combinación*, su trabajo arroja un error. 

Del mismo modo, si usa un nodo *Seleccionar desde recopilación* en el diagrama de trabajo como nodo principal de una transformación que espera un único `DynamicFrame` como entrada, su trabajo arroja un error.

![\[La captura de pantalla muestra el campo Node parents (Nodos principales) en la pestaña Node properties (Propiedades del nodo) del panel de detalles del nodo. El nodo principal seleccionado es SplitFields y el mensaje de error mostrado dice: “Parent node Split Fields outputs a collection, but node Drop Fields does not accept a collection (El nodo principal Dividir campos genera una recopilación, pero el nodo Descartar campos no acepta una recopilación)”.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/screenshot-edit-splitfields-wrong-parent.png)


# Uso de SelectFromCollection (Seleccionar desde la recopilación) para elegir qué conjunto de datos desea mantener
<a name="transforms-configure-select-collection"></a>

Use la transformación *Seleccionar desde recopilación* para convertir una recopilación de `DynamicFrames` en un solo `DynamicFrame`.

**Para agregar un nodo de transformación Seleccionar desde recopilación al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **SelectFromCollection** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)**.

1. En el encabezado **Frame index (Índice del marco)**, elija el número de índice de la matriz que corresponde al `DynamicFrame` que desea seleccionar de la recopilación de `DynamicFrames`.

   Por ejemplo, si el nodo principal de esta transformación es *Dividir campos*, podrá ver el esquema para cada `DynamicFrame` en la pestaña **Output schema (Esquema de salida)** del nodo. Si desea mantener el `DynamicFrame` asociado al esquema para **Output 2 (Salida 2)**, debería seleccionar **1** para el valor de **Frame index (Índice del marco)**, que es el segundo valor de la lista.

   Solo el `DynamicFrame` que elija se incluye en la salida.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Buscar y rellenar valores faltantes en un conjunto de datos
<a name="transforms-configure-fmv"></a>

Puede utilizar la transformación *FillMissingValues (Completar valores faltantes)* para localizar registros en el conjunto de datos que tienen valores faltantes y agregar un nuevo campo con un valor determinado por imputación. El conjunto de datos de entrada se utiliza para brindar formación al modelo de machine learning (ML) que determina cuál debe ser el valor que falta. Si utiliza conjuntos de datos progresivos, cada conjunto progresivo se utiliza como datos de formación para el modelo de ML, por lo que es posible que los resultados no sean tan precisos.

**Para utilizar un nodo de transformación FillMissingValues (Completar valores faltantes) en el diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **FillMissingValues** para agregar una nueva transformación al diagrama de trabajo, si es necesario.

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación. 

1. Elija la pestaña **Transform (Transformación)**.

1. Para **Data field (Campo de datos)**, elija el nombre de columna o campo de los datos de origen que desea analizar para detectar los valores que faltan.

1. (Opcional) en el campo **New field name (Nombre de campo nuevo)**, ingrese un nombre para el campo agregado a cada registro que contendrá el valor de reemplazo estimado para el campo analizado. Si el campo analizado no tiene un valor faltante, el valor del campo analizado se copia en el nuevo campo. 

   Si no especifica un nombre para el campo nuevo, el nombre predeterminado es el nombre de la columna analizada con `_filled`asociado. Por ejemplo, si ingresa **Age** para el **Data field (Campo de datos)** y no especifica un valor para **New field name (Nombre de campo nuevo)**, se agrega un nombre de campo nuevo **Age\$1filled** a cada registro.

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Filtrado de claves dentro de un conjunto de datos
<a name="transforms-filter"></a>

Use la transformación *Filter (Filtro)* para crear un nuevo conjunto de datos al filtrar los registros del conjunto de datos de entrada en función de una expresión regular. Las filas que no satisfacen la condición del filtro se eliminan de la salida.
+ Para los tipos de datos de cadena, puede filtrar filas en las que el valor de clave coincida con una cadena especificada.
+ Para los tipos de datos numéricos, puede filtrar filas mediante la comparación del valor clave con un valor especificado a través de los operadores de comparación `<`, `>`, `=`, `!=`, `<=` y `>=`.

Si especifica varias condiciones de filtro, los resultados se combinan mediante un operador `AND` de forma predeterminada, pero puede elegir `OR` en su lugar.

La transformación *Filtro* distingue entre mayúsculas y minúsculas. Agregue una transformación *ApplyMapping (Aplicar mapeo)*como nodo principal si necesita nombres de clave de propiedad que no distingan entre mayúsculas y minúsculas.

**Para agregar un nodo de transformación de filtro al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **Filtro** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. Elija la pestaña **Transform (Transformación)**.

1. Elija **Global AND (Global Y)** o **Global OR (Global O)**. Esto determina cómo se combinan distintas condiciones de filtro. Todas las condiciones se combinan mediante operaciones `AND` o `OR`. Si solo tiene una sola condición de filtro, puede elegir entre cualquiera de las dos.

1. Elija el botón **Add condition (Agregar condición)** en la sección **Filter condition (Condición de filtro)** para agregar una condición de filtro. 

   En el campo **Key (Clave)**, elija un nombre de clave de propiedad a partir del conjunto de datos. En el campo **Operation (Operación)** elija el operador de comparación. En el campo **Value (Valor)**, ingrese el valor de comparación. Estas son algunas ejemplos de condiciones de filtro:
   + `year >= 2018`
   + `State matches 'CA*'`

   Cuando filtra los valores de cadena, asegúrese de que el valor de comparación utiliza un formato de expresión regular que coincida con el lenguaje de script seleccionado en las propiedades del trabajo (Python o Scala).

1. Agregue condiciones de filtro adicionales, según sea necesario. 

1. (Opcional) después de configurar las propiedades del nodo de transformación, puede ver el esquema de datos para sus datos al seleccionar la pestaña **Output schema (Esquema de salida)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Si no ha especificado un rol de IAM en **Job details (Detalles del trabajo)**, se le pedirá que ingrese un rol de IAM aquí.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Uso de DropNullFields para eliminar campos con valores nulos
<a name="transforms-dropnull-fields"></a>

 Utilice la transformación *DropNullFields* para eliminar campos del conjunto de datos si todos los valores son ‘nulos’. De forma predeterminada, AWS Glue Studio reconocerá objetos nulos, pero algunos valores, como cadenas vacías, cadenas que son “nulas”, los enteros -1 u otros marcadores de posición, como ceros, no se reconocen de manera automática como nulos. 

**Para utilizar DropNullFields**

1.  Agregue un nodo DropNullFields al diagrama de trabajo. 

1.  En la pestaña **Node properties** (Propiedades del nodo), elija valores adicionales que representen un valor nulo. Puede elegir seleccionar todos los valores o ninguno:   
![\[La captura de pantalla muestra la pestaña Transform (Transformar) para el nodo DropNullFields.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/DropNullFields-transform-tab.png)
   +  Cadena vacía (“” o “): los campos que contienen cadenas vacías se eliminarán 
   +  “cadena null”: los campos que contienen la cadena con la palabra ‘null’ se eliminarán 
   +  entero -1: los campos que contienen un entero -1 (uno negativo) se eliminarán 

1.  Si es necesario, también puede especificar valores nulos personalizados. Son valores nulos que pueden ser exclusivos de su conjunto de datos. Para agregar un valor nulo personalizado, elija **Add new value** (Agregar un nuevo valor). 

1.  Ingrese el valor nulo personalizado. Por ejemplo, puede ser cero o cualquier valor que se utilice para representar un valor nulo en el conjunto de datos. 

1.  Elija el tipo de datos en el campo desplegable. Los tipos de datos pueden ser String o Integer. 
**nota**  
 Los valores nulos personalizados y los tipos de datos deben coincidir con exactitud para que los campos se reconozcan como valores nulos y se eliminen. Las coincidencias parciales en las que solo coincide el valor nulo personalizado, pero el tipo de datos no lo hace, no provocarán que los campos se eliminen. 

# Uso de una consulta SQL para transformar datos
<a name="transforms-sql"></a>

Puede usar una transformación **SQL** para escribir su propia transformación en forma de consulta SQL.

Un nodo de transformación SQL puede tener varios conjuntos de datos como entradas, pero solo produce un único conjunto de datos como salida. Contiene un campo de texto, donde se introduce la consulta de Apache SparkSQL. Puede asignar alias a cada conjunto de datos utilizado como entrada, para ayudar simplemente a la consulta SQL. Para obtener más información acerca de la sintaxis SQL, consulte [documentación de Spark SQL](https://spark.apache.org/docs/latest/sql-ref.html).

**nota**  
Si utiliza una transformación de Spark SQL con un origen de datos ubicado en una VPC, agregue un punto de enlace de desarrollo de la VPC de AWS Glue a la VPC que contenga el origen de datos. Para obtener más información acerca de la configuración de puntos de enlace de desarrollo, consulte [Agregar un punto de enlace de desarrollo](https://docs.aws.amazon.com/glue/latest/dg/add-dev-endpoint.html), [Configuración del entorno para puntos de enlace de desarrollo](https://docs.aws.amazon.com/glue/latest/dg/start-development-endpoint.html) y [Acceso al punto de enlace de desarrollo](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-elastic-ip.html) en la *Guía para desarrolladores de AWS Glue*.

**Para agregar un nodo de transformación SQL al diagrama de trabajo**

1. (Opcional) agregue un nodo de transformación al diagrama de trabajo, de ser necesario. Seleccione **SQL Query** para el tipo de nodo.
**nota**  
 Si utiliza una sesión de vista previa de datos y un nodo de código o SQL personalizado, la sesión de vista previa de datos ejecutará el SQL o el bloque de código tal cual está para todo el conjunto de datos. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, o si desea varias entradas para la transformación SQL, elija un nodo en la lista **Node parents (Nodos principales)** que se utilizará como origen de entrada para la transformación. Agregue nodos principales adicionales según sea necesario.

1. Elija la pestaña **Transform (Transformación)** en el panel de detalles del nodo. 

1. Los conjuntos de datos de origen para la consulta SQL se identifican mediante los nombres especificados en el campo **Name (Nombre)** para cada nodo. Si no desea utilizar estos nombres o si los nombres no son adecuados para una consulta SQL, puede asociar un nombre a cada conjunto de datos. La consola proporciona alias predeterminados, como `MyDataSource`.

   Por ejemplo, si un nodo principal para el nodo de transformación SQL se denomina `Rename Org PK field`, puede asociar el nombre `org_table` con este conjunto de datos. Este alias se puede utilizar en la consulta SQL en lugar del nombre del nodo. 

1. En el campo de entrada de texto bajo el encabezado **Code block (Bloque de código)**, pegue o escriba la consulta SQL. El campo de texto muestra resaltado de sintaxis SQL y sugerencias de palabras clave.

1. Con el nodo de transformación SQL seleccionado, elija la opción **Output schema (Esquema de salida)** y, a continuación, elija **Edit (Editar)**. Proporcione las columnas y los tipos de datos que describen los campos de salida de la consulta SQL.

   Especifique el esquema mediante las siguientes acciones en la sección **Output schema (Esquema de salida)** de la página:
   + Para cambiar el nombre de una columna, coloque el cursor en el cuadro de texto **Key (Clave)** para la columna [también conocido como *field (campo)* o *property key (clave de propiedad)*] e ingrese el nuevo nombre.
   + Para cambiar el tipo de datos de una columna, seleccione el nuevo tipo de datos para la columna en la lista desplegable.
   + Para agregar una nueva columna de nivel superior al esquema, elija la opción Overflow (Desbordamiento) (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-schema-actions-button.png)) y, a continuación, elija **Add root key (Agregar clave raíz)**. Se agregan nuevas columnas en la parte superior del esquema.
   + Para eliminar una columna del esquema, elija el ícono de eliminación (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/delete-icon-black.png)) en el extremo derecho del nombre de la clave. 

1. Cuando termine de especificar el esquema de salida, elija **Apply (Aplicar)** para guardar los cambios y salir del editor de esquemas. Si no desea guardar los cambios, elija **Cancel (Cancelar)** para editar el editor de esquemas.

1. (Opcional) después de configurar las propiedades del nodo y las propiedades de transformación, puede obtener una previsualización del conjunto de datos modificado si selecciona la opción **Data preview (Previsualización de datos)** en el panel de detalles del nodo. La primera vez que elija esta pestaña para cualquier nodo de trabajo, se le pedirá que proporcione un rol de IAM para acceder a los datos. Hay un costo asociado con el uso de este recurso y la facturación comienza tan pronto como proporcione un rol de IAM.

# Uso de Agregar para realizar cálculos resumidos en campos seleccionados
<a name="transforms-aggregate-fields"></a>

**Para utilizar la transformación agregada**

1.  Agregue el nodo agregado al diagrama de trabajos. 

1.  En la pestaña **Node properties** (Propiedades del nodo), elija los campos para agruparlos al seleccionar el campo desplegable (opcional). Puede seleccionar más de un campo a la vez o buscar un nombre de campo al escribir en la barra de búsqueda. 

    Cuando se seleccionan los campos, se muestran el nombre y el tipo de datos. Para eliminar un campo, seleccione ‘X’.   
![\[La captura de pantalla muestra la pestaña Transform (Transformar) para el nodo agregado.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/Aggregate-transform-tab.png)

1.  Elija **Aggregate another column** (Agregar otra columna). Es necesario seleccionar al menos un campo.   
![\[La captura de pantalla muestra los campos al elegir agregar otra columna.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/Aggregate-fieldtoaggregate.png)

1.  Elija un campo en el **Field to aggretate** (Campo a agregar) desplegable. 

1.  Elija la función de agregación que desea aplicar al campo elegido: 
   +  avg: calcula el promedio 
   +  countDistinct: calcula el número de valores únicos no nulos 
   +  count: calcula el número de valores no nulos 
   +  first: devuelve el primer valor que satisface los criterios “agrupar por” 
   +  last: devuelve el último valor que satisface los criterios “agrupar por” 
   +  kurtosis: calcula la nitidez del pico de una curva de distribución de frecuencias 
   +  max: devuelve el valor más alto que satisface los criterios “agrupar por” 
   +  min: devuelve el valor más bajo que satisface los criterios “agrupar por” 
   +  sesgo: medida de la asimetría de la distribución de probabilidad de una distribución normal 
   +  stddev\$1pop: calcula la desviación estándar de la población y devuelve la raíz cuadrada de la variación de la población 
   +  sum: la suma de todos los valores en el grupo 
   +  sumDistinct: la suma de distintos valores en el grupo 
   +  var\$1samp: la variación de la muestra del grupo (ignora los valores nulos) 
   +  var\$1pop: la variación de la población del grupo (ignora los valores nulos) 

# Aplanamiento de estructuras anidadas
<a name="transforms-flatten"></a>

*Aplana* los campos de las estructuras anidadas en los datos para que se conviertan en campos de nivel superior. Los nuevos campos se denominan con el nombre del campo precedido de los nombres de los campos de la estructura que lo integran, separados por puntos. 

Por ejemplo, si los datos tienen un campo de tipo de estructura llamado “phone\$1numbers”, que entre otros campos tiene uno del tipo “Struct” denominado “home\$1phone” con dos campos: “country\$1code” y “number”. Una vez aplanados, estos dos campos pasarán a ser campos de nivel superior denominados: “phone\$1numbers.home\$1phone.country\$1code” y “phone\$1numbers.home\$1phone.number”, respectivamente.

**Para agregar un nodo de transformación de *Aplanado* al diagrama de trabajo**

1. Abra el panel de recursos y elija la pestaña **Transformación** y, a continuación, **Flatten** para agregar una nueva transformación al diagrama de trabajo. También puede utilizar la barra de búsqueda a través del ingreso de “Flatten” y, a continuación, hacer clic en el nodo Flatten. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.  
![\[La captura de pantalla muestra el panel de recursos y la barra de búsqueda con la palabra “Flatten”. El resultado de la búsqueda muestra la transformación Flatten.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transform-flatten.png)

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. (Opcional) En la pestaña **Transformación**, puede limitar el nivel máximo de anidamiento para aplanar. Por ejemplo, si establece ese valor en 1 significa que solo se aplanarán las estructuras de nivel superior. Si se establece el máximo en 2, se aplanarán el nivel superior y las estructuras que se encuentran justo debajo de este.

# Agregar una columna UUID
<a name="transforms-uuid"></a>

Al agregar una columna *UUID* (Identificador único universal), se le asignará una cadena única de 36 caracteres a cada fila.

**Para agregar un nodo de transformación de *UUID* en el diagrama de trabajo**

1. Abra el panel de recursos y, luego, elija **UUID** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. (Opcional) En la pestaña **Transformación**, puede personalizar el nombre de la nueva columna. De forma predeterminada, se denominará “uuid”.

# Agregar una columna de identificador
<a name="transforms-identifier"></a>

Asigne un *identificador* numérico para cada fila del conjunto de datos.

**Para agregar un nodo de transformación de *Identificador* en el diagrama de trabajo**

1. Abra el panel de recursos y, luego, elija **Identificador** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. (Opcional) En la pestaña **Transformación**, puede personalizar el nombre de la nueva columna. De forma predeterminada, se llamará “id”.

1. (Opcional) Si el trabajo procesa y almacena los datos de forma incremental, debe evitar que se vuelvan a utilizar los mismos id entre las ejecuciones del trabajo.

   En la pestaña **Transformación**, marque la opción de la casilla de verificación **único**. Incluirá la marca temporal del trabajo en el identificador, lo que lo hará único entre varias ejecuciones. Para permitir el número mayor, la columna, en lugar tipo long, será un decimal.

# Convertir una columna al tipo de marca temporal
<a name="transforms-to-timestamp"></a>

Puede utilizar la transformación *marca temporal* para cambiar el tipo de datos de una columna numérica o de cadena a una de marca temporal, de modo que pueda almacenarse con ese tipo de datos o aplicarse a otras transformaciones que requieran una marca temporal.

**Para agregar un nodo de transformación de *marca temporal* al diagrama de trabajo**

1. Abra el panel Recursos y, luego, elija **Marca temporal** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, introduzca el nombre de la columna que se va a convertir.

1. En la pestaña **Transformación**, defina cómo analizar la columna seleccionada mediante la elección del tipo.

   Si el valor es un número, se puede expresar en segundos (marca temporal de Unix/Python), milisegundos o microsegundos, elija la opción correspondiente.

   Si el valor es una cadena con formato, elija el tipo “iso”, la cadena debe ajustarse a una de las variantes del formato ISO, por ejemplo: “2022-11-02T14:40:59.915Z”.

   Si desconoce el tipo en este momento o si diferentes filas utilizan tipos diferentes, puede elegir la opción “detección automática” y el sistema hará su mejor estimación, con un pequeño costo en el rendimiento.

1. (Opcional) En la pestaña **Transformación**, en lugar de convertir la columna seleccionada, puede crear una nueva y conservar la original al asignar un nombre para la nueva columna.

# Convertir una columna con marca temporal en una cadena con formato
<a name="transforms-format-timestamp"></a>

Formatee una columna de marca temporal en una cadena basada en un patrón. Puede utilizar *Formatear marca temporal* para obtener la fecha y la hora como una cadena con el formato deseado. Puede definir el formato con la [Sintaxis de fecha de Spark](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html), así como la mayoría de los [Códigos de fecha de Python](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).

Por ejemplo, si quiere que la cadena de fecha tenga el formato “2023-01-01 00:00”, puede definir dicho formato con la sintaxis de Spark como “yyyy-MM-dd HH:mm” o los códigos de fecha equivalentes de Python como “%Y-%m-%d %H:%M”

**Para agregar un nodo de transformación de *formateo de marca temporal* al diagrama de trabajo**

1. Abra el panel de recursos y, a continuación, elija **Formatear marca temporal** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, introduzca el nombre de la columna que se va a convertir.

1. En la pestaña **Transformación**, introduzca el patrón de **Formato de marca temporal** que desea utilizar, expresado mediante la [sintaxis de fecha de Spark](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html) o [los códigos de fecha de Python](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).

1. (Opcional) En la pestaña **Transformación**, en lugar de convertir la columna seleccionada, puede crear una nueva y conservar la original al asignar un nombre para la nueva columna.

# Creación de una transformación de Enrutador condicional
<a name="transforms-conditional-router"></a>

 La transformación del Enrutador condicional permite aplicar múltiples condiciones a los datos entrantes. Cada fila de los datos entrantes se evalúa mediante una condición de filtro de grupo y se procesa en su grupo correspondiente. Si una fila cumple con más de una condición de filtro de grupo, la transformación pasa la fila a varios grupos. Si una fila no cumple con ninguna condición, se puede eliminar o enrutar a un grupo de salida predeterminado. 

 Esta transformación es similar a la transformación de filtro, pero es útil para los usuarios que desean probar los mismos datos de entrada en múltiples condiciones. 

**Para agregar una transformación de Enrutador condicional:**

1.  Elija un nodo en el que realizará la transformación de enrutador condicional. Puede ser un nodo de origen o una transformación distinta. 

1.  Elija **Acción** y, a continuación, utilice la barra de búsqueda para buscar y elegir “Enrutador condicional”. Se agrega una transformación de **Enrutador condicional** junto con dos nodos de salida. Un nodo de salida, “Grupo predeterminado”, contiene registros que no cumplen ninguna de las condiciones definidas en los otros nodos de salida. El grupo predeterminado no se puede editar.   
![\[La captura de pantalla muestra el nodo de transformación del enrutador condicional conectado a un nodo de origen. Los nodos de salida se muestran ramificados desde el nodo del enrutador condicional.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transform-conditional-router-node.png)

    Puede agregar grupos de salida adicionales si selecciona **Agregar grupo**. Puede asignar un nombre a cada grupo de resultado y agregar condiciones de filtro y un operador lógico.   
![\[La captura de pantalla muestra la pestaña de transformación del enrutador condicional con opciones para nombrar el grupo de salida, el operador lógico y los filtros condicionales.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transform-conditional-router-tab.png)

1.  Cambie el nombre del grupo de salida al introducir un nombre nuevo para el grupo. AWS Glue Studio asignará de forma automática un nombre a los grupos (por ejemplo, “output\$1group\$11”). 

1.  Elija un operador lógico (**AND**, **OR**) y agregue una **Condición de filtro** mediante la especificación de la **Clave**, la **Operación** y el **Valor**. Los operadores lógicos permiten implementar más de una condición de filtro y aplicar el operador lógico en cada condición de filtro que especifique. 

    Cuando especifique la clave, puede elegir entre las claves disponibles en el esquema. Luego, puede elegir la operación disponible según el tipo de clave que seleccionó. Por ejemplo, si el tipo de clave es “cadena”, la operación disponible para elegir es “coincidencias”.   
![\[La captura de pantalla muestra la pestaña de transformación del enrutador condicional con los campos de condiciones del filtro para la clave, la operación y el valor.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transform-conditional-router-filter-condition.png)

1.  Ingrese el valor en el campo **Valor**. Elija **Agregar condición** para agregar condiciones de filtro adicionales. Para eliminar las condiciones de filtro, elija el icono de la papelera. 

# Uso de la transformación Concatenar columnas para agregar columnas
<a name="transforms-concatenate-columns"></a>

 La transformación de concatenar permite crear una nueva columna de cadena mediante la utilización de los valores de otras columnas con un espaciador opcional. Por ejemplo, si definimos una columna concatenada “date” como la concatenación de “año”, “mes” y “día” (en ese orden) con “-” como espaciador, obtendremos: 


| day | month | year | date | 
| --- | --- | --- | --- | 
| 01 | 01 | 2020 | 2020-01-01 | 
| 02 | 01 | 2020 | 2020-01-02 | 
| 03 | 01 | 2020 | 2020-01-03 | 
| 04 | 01 | 2020 | 2020-01-04 | 

**Para agregar una transformación de Concatenar:**

1. Abre el panel de recursos. A continuación, elija **Concatenar columnas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese el nombre de la columna que contendrá la cadena concatenada, así como las columnas que se concatenarán. El orden en el que selecciones las columnas en el menú desplegable será el orden en que se usen.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación de concatenar.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-concatenate-transform-tab.png)

1. **Espaciador (opcional):** introduce una cadena para colocarla entre los campos concatenados. No hay un espaciador predeterminado.

1. **Valor nulo (opcional):** ingrese una cadena para utilizarla cuando el valor de una columna sea nulo. De forma predeterminada, en los casos en que las columnas tienen el valor “NULO” o “NA”, se utiliza una cadena vacía.

# Uso de la transformación de cadena dividida para dividir una columna de cadena
<a name="transforms-split-string"></a>

 La transformación de cadena dividida permite dividir una cadena en una matriz de símbolos mediante una expresión regular para definir cómo se realiza la división. Luego, puede mantener la columna como un tipo de matriz o aplicar una transformación de **matriz a columnas** después de esta, para extraer los valores de la matriz en los campos de nivel superior, suponiendo que cada token tenga un significado que conozcamos de antemano. Además, si el orden de los símbolos es irrelevante (por ejemplo, un conjunto de categorías), puedes usar la transformación **Expansión** para generar una fila independiente para cada valor. 

 Por ejemplo, se puede dividir la columna “categorías” mediante una coma como patrón para agregar una columna “categories\$1arr”. 


| product\$1id | categories | categories\$1arr | 
| --- | --- | --- | 
| 1 | deportes, invierno | [deportes, invierno] | 
| 2 | jardín, herramientas | [jardín, herramientas] | 
| 3 | video juegos | [video juegos] | 
| 4 | juego, juego de mesa, social | [juego, juego de mesa, social] | 

**Para agregar una transformación de cadena dividida, realice lo siguiente:**

1. Abra el panel de recursos y, luego, elija Cadena dividida para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña Propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, elija la columna que desee dividir e ingrese el patrón que se utilizará para dividir la cadena. En la mayoría de los casos, solo tiene que ingresar los caracteres, a menos que tengan un significado especial como expresión regular y deban ocultarse. Los caracteres que hay que ocultar son: `\.[]{}()<>*+-=!?^$|` mediante la adición de una barra invertida delante del carácter. Por ejemplo, si desea separarlos por un punto ('.'), debe ingresar `\.`. Sin embargo, una coma no tiene un significado especial y se puede especificar tal cual: `,`.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación de dividir la cadena.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-split-string-transform-tab.png)

1. (Opcional) Si desea conservar la columna de cadena original, puede ingresar un nombre para una nueva columna de matriz, de manera que se mantenga tanto la columna de cadena original como la nueva columna de matriz tokenizada.

# Uso de la transformación de Matriz a columnas para extraer los elementos de una matriz en columnas de nivel superior
<a name="transforms-array-to-columns"></a>

 La transformación de Matriz a columnas permite extraer algunos o todos los elementos de una columna de tipo matriz en nuevas columnas. La transformación llenará las nuevas columnas tanto como sea posible si la matriz tiene valores suficientes para extraerlos y, opcionalmente, tomará los elementos en las posiciones especificadas. 

 Por ejemplo, si tiene una columna de matriz llamada “subred”, que fue el resultado de aplicar la transformación “cadena dividida” en una subred ip v4, puede extraer la primera y la cuarta posición en las nuevas columnas “first\$1octect” y “forth\$1octect”. El resultado de la transformación en este ejemplo sería (observe que las dos últimas filas tienen matrices más cortas de lo esperado): 


| subred | first\$1octect | fourth\$1octect | 
| --- | --- | --- | 
| [54, 240, 197, 238] | 54 | 238 | 
| [192, 168, 0, 1] | 192 | 1 | 
| [192, 168] | 192 |  | 
| [] |  |  | 

**Para agregar una transformación de Matriz a columnas:**

1. Abra el panel de recursos y elija **Matriz a columnas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, elija la columna de matriz a extraer e ingrese la lista de columnas nuevas para los tokens extraídos.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación de Matriz a columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-array-to-columns-transform-tab.png)

1. (Opcional) Si no desea utilizar los tokens de la matriz para asignarlos a las columnas, puede especificar los índices que se utilizarán, que se asignarán a la lista de columnas en el mismo orden especificado. Por ejemplo, si las columnas de salida son “columna1, columna2, columna3” y los índices “4, 1, 3”, el cuarto elemento de la matriz irá a la columna1, el primero a la columna2 y el tercero a la columna3 (si la matriz es más corta que el número de índice, se establecerá un valor NULO).

# Uso de la transformación Agregar marca de tiempo actual
<a name="transforms-add-current-timestamp"></a>

 La transformación **Agregar marca de tiempo actual** permite marcar las filas con la hora en la que se procesaron los datos. Esto resulta útil para fines de auditoría o para realizar un seguimiento de la latencia en la canalización de datos. Puede agregar esta nueva columna como un tipo de datos de marca de tiempo o una cadena formateada. 

**Para agregar una transformación de tipo Add Current Timestamp:**

1. Abra el panel de recursos y, a continuación, elija **Agregar marca de tiempo actual** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal. 

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.  
![\[La captura de pantalla muestra la pestaña de Transformar de la transformación Agregar marca de tiempo actual.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-add-current-timestamp-transform-tab.png)

1. (Opcional) En la pestaña **Transformación**, ingrese un nombre personalizado para la nueva columna y un formato si prefiere que la columna sea una cadena de fecha con formato.

# Uso de la transformación de rotar filas a columnas
<a name="transforms-pivot-rows-to-columns"></a>

 La transformación **filas dinámicas a columnas** permite agregar una columna numérica mediante la rotación de valores únicos en las columnas seleccionadas para convertirlas en nuevas columnas (si se seleccionan varias columnas, los valores se concatenan para dar nombre a las nuevas columnas). De esta forma, las filas se consolidan y hay más columnas con agregaciones parciales para cada valor único. Por ejemplo, si tiene este conjunto de datos de ventas por mes y país (ordenado para que sea más fácil de ilustrar): 


| year | month | país | importe | 
| --- | --- | --- | --- | 
| 2020 | Ene | uk | 32 | 
| 2020 | Ene | de | 42 | 
| 2020 | Ene | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 4 | 
| 2020 | Feb | de | 7 | 
| 2020 | Feb | us | 6 | 
| 2020 | Feb | us | 12 | 
| 2020 | Ene | us | 90 | 

 Si cambia el **importe** y el **país** como columnas de agregación, se crean nuevas columnas a partir de la columna del **país** original. **En la siguiente tabla, tiene nuevas columnas para de**, **uk** y **us** en lugar de la columna de **país**. 


| year | month | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Ene | 42 | 32 | 64 | 
| 2020 | Ene | 11 | 67 | 18 | 
| 2021 | Ene |  |  | 90 | 

 Si, por el contrario, desea cambiar el mes y el condado, obtendrá una columna para cada combinación de los valores de esas columnas: 


| year | Jan\$1DE | Jan\$1uk | Jan\$1us | Feb\$1de | Feb\$1UK | Feb\$1US | 
| --- | --- | --- | --- | --- | --- | --- | 
| 2020 | 42 | 32 | 64 | 11 | 67 | 18 | 
| 2021 |  |  | 90 |  |  |  | 

**Para agregar una transformación de filas dinámicas a columnas, realice lo siguiente:**

1. Abra el panel de recursos y, luego, elija **Filas dinámicas a columnas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, elija la columna numérica que se agregará para generar los valores de las nuevas columnas, la función de agregación que desee aplicar y las columnas para convertir sus valores únicos en columnas nuevas.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación “Cambiar columnas a filas”.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-pivot-rows-to-columns-transform-tab.png)

# Uso de la transformación de anulación de rotación de columnas a filas
<a name="transforms-unpivot-columns-to-rows"></a>

 La transformación **Anular rotación** permite convertir columnas en valores de nuevas columnas, lo que genera una fila para cada valor único. Si bien es lo opuesto a rotar, se debe tener en cuenta que no es equivalente, ya que no puede separar filas con valores idénticos que se hayan agregado ni dividir combinaciones en las columnas originales (se puede hacerlo más adelante mediante una transformación dividida). Por ejemplo, si tiene la siguiente carga: 


| year | month | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Ene | 42 | 32 | 64 | 
| 2020 | Feb | 11 | 67 | 18 | 
| 2021 | Ene |  |  | 90 | 

 Se puede anular la rotación de las columnas “de”, “uk” y “us” y convertirlas en una columna “país” con el valor “importe” y obtener lo siguiente (ordenado aquí a modo ilustrativo): 


| year | month | país | importe | 
| --- | --- | --- | --- | 
| 2020 | Ene | uk | 32 | 
| 2020 | Ene | de | 42 | 
| 2020 | Ene | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 11 | 
| 2020 | Feb | us | 18 | 
| 2021 | Ene | us | 90 | 

 Observe que las columnas que tienen un valor NULO (“de” y “uk” de enero de 2021) no se generan de forma predeterminada. Puede activar esa opción para obtener: 


| year | month | país | importe | 
| --- | --- | --- | --- | 
| 2020 | Ene | uk | 32 | 
| 2020 | Ene | de | 42 | 
| 2020 | Ene | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 11 | 
| 2020 | Feb | us | 18 | 
| 2021 | Ene | us | 90 | 
| 2021 | Ene | de |  | 
| 2021 | Ene | uk |  | 

**Para agregar una transformación de anulación de rotación de columnas a filas, realice lo siguiente:**

1. Abra el panel de recursos y, luego, elija **Anular rotación de columnas en filas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese las nuevas columnas que se van a crear para que contengan los nombres y valores de las columnas seleccionadas para anular la rotación.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación “Anular cambio de columnas a filas”.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-unpivot-columns-to-rows-transform-tab.png)

# Uso de la transformación de Procesamiento de autobalance para optimizar el tiempo de ejecución
<a name="transforms-autobalance-processing"></a>

 La transformación de **Procesamiento de autobalance** redistribuye los datos entre los trabajadores para mejorar el rendimiento. Esto ayuda en los casos en que los datos están desequilibrados o, tal como provienen del origen, no permiten un procesamiento paralelo suficiente. Esto es común cuando el origen está comprimido con gzip o es JDBC. La redistribución de los datos tiene un costo de rendimiento modesto, por lo que es posible que la optimización no siempre compense ese esfuerzo si los datos ya estaban bien equilibrados. En la imagen inferior, la transformación utiliza la repartición de Apache Spark para reasignar datos de forma aleatoria entre un número de particiones óptimo para la capacidad del clúster. Para los usuarios avanzados, es posible ingresar varias particiones de forma manual. Además, se puede utilizar para optimizar la escritura de tablas particionadas al reorganizar los datos en función de columnas específicas. Esto da como resultado archivos de salida más consolidados. 

****

1. Abra el panel de recursos y, a continuación, elija **Procesamiento de autobalance** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. (Opcional) En la pestaña **Transformación**, puede ingresar varias particiones. En general, se recomienda dejar que el sistema decida este valor; sin embargo, puede ajustar el multiplicador o ingresar un valor específico si necesita controlarlo. Si va a guardar los datos particionados por columnas, puede elegir las mismas columnas como columnas de repartición. De esta forma, minimizará la cantidad de archivos en cada partición y evitará tener muchos archivos por partición, lo que dificultaría el rendimiento de las herramientas que consultan esos datos.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación de Procesamiento de autobalance.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-autobalance-processing-transform-tab.png)

# Uso de la transformación de columna derivada para combinar otras columnas
<a name="transforms-derived-column"></a>

 La transformación de **Columna derivada** permite definir una nueva columna basada en una fórmula matemática o expresión SQL en la que puede utilizar otras columnas de los datos, así como constantes y literales. Por ejemplo, para obtener una columna de “porcentaje” a partir de las columnas “éxito” y “recuento”, puede ingresar la expresión SQL: “éxito \$1 100 / recuento \$1\$1 ‘%’”. 

 Ejemplo de resultado: 


| success | count | percentage | 
| --- | --- | --- | 
| 14 | 100 | 14 % | 
| 6 | 20 | 3 % | 
| 3 | 40 | 7,5 % | 

**Para agregar una transformación de columna derivada:**

1. Abra el panel de recursos y, a continuación, elija **Columna derivada** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese el nombre de la columna y la expresión de su contenido.  
![\[La captura de pantalla muestra la pestaña de Transformar de la transformación Columna derivada.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-dervied-column-transform-tab.png)

# Uso de la transformación de búsqueda para agregar datos coincidentes de una tabla de catálogo
<a name="transforms-lookup"></a>

 La transformación de **búsqueda** permite agregar columnas de una tabla de catálogo definida cuando las claves coinciden con las columnas de búsqueda definidas en los datos. Esto equivale a hacer una unión exterior izquierda entre los datos y la tabla de consulta al usar como condición columnas coincidentes. 

**Para agregar una transformación de búsqueda, realice lo siguiente:**

1. Abra el panel de recursos y, luego, elija **Búsqueda** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese el nombre completo de la tabla de catálogo que desee utilizar para realizar las búsquedas. Por ejemplo, si la base de datos es “mydb” y la tabla es “mytable”, ingrese “mydb.mytable”. A continuación, ingrese los criterios para buscar una coincidencia en la tabla de consulta, si la clave de búsqueda está compuesta. Ingrese la lista de columnas clave separadas por comas. Si una o más de las columnas clave no tienen el mismo nombre, se debe definir el mapeo de coincidencias. 

   Por ejemplo, si las columnas de datos son “user\$1id” y “region” y en la tabla de usuarios las columnas correspondientes se denominan “id” y “region”, en el campo **Columnas que deben coincidir**, ingrese: “user\$1id=id, region”. Puede usar region=region, pero no es necesario, ya que son lo mismo.

1. Por último, ingrese las columnas que desee extraer de la fila correspondiente en la tabla de consulta para incorporarlas a los datos. Si no se encontró ninguna coincidencia, dichas columnas se establecerán en CERO.
**nota**  
Debajo de la transformación de **búsqueda**, se utiliza una unión a la izquierda para ser eficiente. Si la tabla de búsqueda tiene una clave compuesta, asegúrese de que las columnas que deben coincidir estén configuradas para que coincidan con todas las columnas clave, de modo que solo pueda producirse una coincidencia. De lo contrario, coincidirán varias filas de búsqueda y, como resultado, se agregarán filas adicionales para cada una de esas coincidencias.  
![\[La captura de pantalla muestra la pestaña Transformación de la transformación de buscar.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-lookup-transform-tab.png)

# Uso de la transformación Desglosar matriz o Mapa en filas
<a name="transforms-explode-array"></a>

 La transformación **Desglosar** permite extraer valores de una estructura anidada en filas individuales que son más fáciles de manipular. En el caso de una matriz, la transformación generará una fila para cada valor de la matriz, mediante la replicación de los valores de las demás columnas de la fila. En el caso de un mapa, la transformación generará una fila para cada entrada con la clave y el valor como columnas más cualquier otra columna de la fila. 

 Por ejemplo, si tenemos este conjunto de datos que tiene una columna de matriz llamada “categorías” con varios valores. 


| product\$1id | categoría | 
| --- | --- | 
| 1 | [deportes, invierno] | 
| 2 | [jardín, herramientas] | 
| 3 | [video juegos] | 
| 4 | [juego, juego de mesa, social] | 
| 5 | [] | 

 Si desglosas la columna de “categorías” en una columna con el mismo nombre, la anularás. Puede seleccionar si desea incluir los valores NULO para obtener lo siguiente (ordenados con fines ilustrativos): 


| product\$1id | categoría | 
| --- | --- | 
| 1 | deportes/ | 
| 1 | invierno | 
| 2 | jardín | 
| 2 | herramienta | 
| 3 | video juegos | 
| 4 | partido | 
| 4 | juego de mesa | 
| 4 | social | 
| 5 |  | 

**Para agregar una transformación de Desglosar matriz o Mapa en filas:**

1. Abra el panel de recursos y, a continuación, elija **Desglosar matriz o Mapa en filas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña **Propiedades del nodo**, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, elija un nodo de la lista Nodos principales para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, elija la columna que desee desglosar (debe ser de tipo matriz o mapa). A continuación, ingrese un nombre para la columna para los elementos de la matriz o los nombres de las columnas para las claves y los valores si va a descomponer un mapa.

1. (Opcional) En la pestaña **Transformación**, de forma predeterminada, si la columna que se va a desglosar es NULA o tiene una estructura vacía, se omitirá en el conjunto de datos desglosado. Si desea conservar la fila (con las nuevas columnas como NULAS), active la casilla “Incluir valores NULOS”.  
![\[La captura de pantalla muestra la pestaña Transformación para la transformación Desglosar matriz o Mapa en filas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/transforms-explode-array-transform-tab.png)

# Uso de la transformación de registro de coincidencias para invocar una transformación de clasificación de datos existente
<a name="transforms-record-matching"></a>

Esta transformación invoca una transformación de clasificación de datos de machine learning de registro de coincidencias existente.

La transformación evalúa los datos actuales y los compara con el modelo entrenado en función de las etiquetas. Se agrega una columna “match\$1id” para asignar cada fila a un grupo de elementos que se consideran equivalentes según el entrenamiento del algoritmo. Para obtener más información, consulte [Registro de coincidencias con Lake Formation FindMatches](https://docs.aws.amazon.com/glue/latest/dg/machine-learning.html).

**nota**  
La versión AWS Glue utilizada en el trabajo visual debe coincidir con la versión que AWS Glue se utilizó para crear la transformación de registro de coincidencias.

![\[La captura de pantalla muestra la pestaña Previsualización de datos de un nodo.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/recording-matching-transform-1.png)


**Para agregar un nodo de transformación de registro de coincidencias al diagrama de trabajo**

1. Abra el panel de recursos y, luego, elija **Registro de coincidencias** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese el ID obtenido de la página de **transformaciones de machine learning**:  
![\[En la captura de pantalla, se muestra el ID de la página de transformaciones de machine learning.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/recording-matching-transform-2.png)

1. (Opcional) En la pestaña **Transformación**, se puede marcar la opción para agregar las puntuaciones de confianza. A costa de un cálculo extra, el modelo estimará una puntuación de confianza para cada partido como una columna adicional.

# Eliminación de filas nulas
<a name="transforms-remove-null-rows"></a>

Esta transformación elimina del conjunto de datos las filas que tienen todas las columnas como nulas. Además, se puede ampliar este criterio para incluir campos vacíos, a fin de mantener las filas en las que al menos una columna no esté vacía.

**Para agregar un nodo de transformación de eliminación de filas nulas campo al diagrama de trabajo**

1. Abra el panel de recursos y, luego, elija **Eliminar filas nulas** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. (Opcional) En la pestaña **Transformación**, active la opción **Extendida** si desea que las filas no solo no sean nulas, sino que tampoco estén vacías, de forma que las cadenas, matrices o mapas vacíos se considerarán nulos a los efectos de esta transformación.

# Análisis de una columna de cadena que contiene datos JSON
<a name="transforms-parse-json-column"></a>

Esta transformación analiza una columna de cadena que contiene datos JSON y la convierte en una estructura o una columna de matriz, en función de si el JSON es un objeto o una matriz, respectivamente. Si lo desea, puede conservar tanto la columna analizada como la original.

El esquema JSON se puede proporcionar o deducir (en el caso de los objetos de JSON), con un muestreo opcional.

**Para agregar un nodo de transformación de columnas JSON de análisis al diagrama de trabajo**

1. Abra el panel de recursos y, luego, elija **Analizar columna JSON** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, selecciona la columna que contiene la cadena JSON.

1. (Opcional) En la pestaña **Transformación**, ingrese el esquema que siguen los datos de JSON con la sintaxis SQL, por ejemplo: “field1 STRING, field2 INT” en el caso de un objeto o “ARRAY<STRING>” en el caso de una matriz.

   Si se trata de una matriz, se requiere el esquema, pero en el caso de un objeto, si no se especifica el esquema, se deducirá a partir de los datos. Para reducir el impacto de inferir el esquema (especialmente en un conjunto de datos grande), puede evitar leer los datos completos dos veces. Para ello, ingrese una **proporción de muestras que se utilizará para inferir el esquema**. Si el valor es inferior a 1, se utiliza la proporción correspondiente de muestras aleatorias para deducir el esquema. Si los datos son fiables y el objeto es concordante entre las filas, se puede utilizar una proporción pequeña como 0,1 para mejorar el rendimiento.

1. (Opcional) En la pestaña **Transformación**, se puede ingresar un nombre de columna nuevo si desea conservar tanto la columna de cadena original como la columna analizada.

# Extracción de una ruta JSON
<a name="transforms-extract-json-path"></a>

Esta transformación extrae nuevas columnas de una columna de cadena JSON. Esta transformación resulta útil cuando solo se necesitan unos pocos elementos de datos y no se desea importar todo el contenido de JSON al esquema de la tabla.

**Para agregar un nodo de transformación de Extracción de Ruta JSON al diagrama de trabajo**

1. Abra el panel de recursos y, a continuación, elija **Extracción de ruta JSON** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, selecciona la columna que contiene la cadena JSON. Ingrese una o más expresiones de ruta JSON separadas por comas, cada una de las cuales haga referencia a cómo extraer un valor de la matriz o el objeto JSON. Por ejemplo, si la columna JSON contiene un objeto con las propiedades “prop\$11” y “prop2”, puede extraer ambos al especificar los nombres “prop\$11, prop\$12”.

   Si el campo JSON tiene caracteres especiales, por ejemplo, para extraer la propiedad de este JSON `{"a. a": 1}`, puede usar la ruta `$['a. a']`. La excepción es la coma porque está reservada para separar rutas. A continuación, ingrese los nombres de columna correspondientes para cada ruta, separados por comas.

1. (Opcional) En la pestaña **Transformación**, puedes marcar la casilla para eliminar la columna JSON una vez extraída. Esto tiene sentido si no necesitas el resto de los datos JSON una vez extraídas las partes que necesitas.

# Extracción de fragmentos de cadenas mediante una expresión regular
<a name="transforms-regex-extractor"></a>

Esta transformación extrae fragmentos de cadenas mediante una expresión regular y crea una nueva columna a partir de ella o varias columnas si se utilizan grupos de expresiones regulares.

**Para agregar un nodo de transformación de extractor de expresiones regulares al diagrama de trabajo:**

1. Abra el panel de recursos y, luego, elija **Extractor de expresiones regulares** para agregar una nueva transformación al diagrama de trabajo. El nodo seleccionado en el momento de agregar el nodo será el nodo principal.

1. (Opcional) En la pestaña propiedades del nodo, puede ingresar un nombre para el nodo en el diagrama de trabajo. Si todavía no está seleccionado un nodo principal, elija un nodo de la lista **Node parents (Nodos principales)** para utilizar como origen de entrada para la transformación.

1. En la pestaña **Transformación**, ingrese la expresión regular y la columna en la que se debe aplicar. Luego, ingrese el nombre de la nueva columna en la que desee almacenar la cadena correspondiente. La nueva columna será nula solo si la columna de origen es nula; si la expresión regular no coincide, la columna estará vacía.

   Si la expresión regular usa grupos, habrá un nombre de columna correspondiente separado por una coma, pero puede omitir los grupos al dejar el nombre de la columna vacío.

   Por ejemplo, si tiene una columna “fecha de compra” con una cadena que utiliza formatos de fecha ISO largos y cortos, querrá extraer el año, el mes, el día y la hora, cuando estén disponibles. Tenga en cuenta que el grupo de horas es opcional; de lo contrario, en las filas donde no esté disponible, todos los grupos extraídos serían cadenas vacías (ya que la expresión regular no coincide). En este caso, no queremos que el grupo haga que la hora sea opcional, sino la interna, por lo que dejamos el nombre en blanco y no se extrae (ese grupo incluiría el carácter T).  
![\[La captura de pantalla muestra la configuración de una expresión regular para el extractor de expresiones regulares.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/regex-extractor-1.png)

   Como resultado, se obtiene la vista previa de los datos:  
![\[La captura de pantalla muestra la configuración de una vista previa de datos para el extractor de expresiones regulares.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/regex-extractor-2.png)

# Crear una transformación personalizada
<a name="transforms-custom"></a>

Si necesita realizar transformaciones más complicadas en sus datos o desea agregar claves de propiedad de datos al conjunto de datos, puede agregar una transformación **Custom code (Código personalizado)** al diagrama de trabajo. El nodo Custom code (Código personalizado) permite introducir un script que realiza la transformación. 

Cuando utilice el código personalizado, debe utilizar un editor de esquemas para indicar los cambios realizados en la salida a través del código personalizado. Cuando edita el esquema, puede realizar las siguientes acciones:
+ Agregar o eliminar claves de propiedades de datos
+ Cambiar el tipo de datos de las claves de propiedad de datos
+ Cambiar el nombre de las claves de propiedad de datos
+ Reestructurar una clave de propiedad anidada

Debe utilizar una transformación *SelectFromCollection (Seleccionar desde la recopilación)* para elegir un único `DynamicFrame` del resultado del nodo de transformación personalizado antes de enviar la salida a una ubicación de destino. 

Utilice las siguientes tareas para agregar un nodo de transformación personalizado al diagrama de trabajo.

## Agregar un nodo de transformación de código personalizado al diagrama de trabajo
<a name="transforms-custom-addnode"></a>

**Para agregar un nodo de transformación personalizado al diagrama de trabajo**

1. (Opcional) abra el panel de recursos y elija **Custom transform** para agregar una nueva transformación al diagrama de trabajo, si es necesario. 

1. En la pestaña **Node properties (Propiedades del nodo)**, ingrese un nombre para el nodo en el diagrama de trabajo. Si todavía no se ha seleccionado un nodo principal, o si desea varias entradas para la transformación personalizada, elija un nodo en la lista **Node parents (Nodos principales)** que se utilizará como origen de entrada para la transformación.

## Introducción de código para el nodo de transformación personalizado
<a name="transforms-custom-addcode"></a>

Puede escribir o copiar el código en un campo de entrada. El trabajo utiliza este código para realizar la transformación de datos. Puede proporcionar un fragmento de código en Python o Scala. El código debe tener uno o varios `DynamicFrames` como entrada y devuelve una recopilación de `DynamicFrames`. 

**Para escribir el script para un nodo de transformación personalizado**

1. Con el nodo de transformación personalizado seleccionado en el diagrama de trabajo, elija la pestaña **Transform (Transformación)**. 

1. En el campo de entrada de texto en el encabezado **Code block (Bloque de código)**, pegue o escriba el código para la transformación. El código que utilice debe coincidir con el lenguaje especificado para el trabajo en la pestaña **Job details (Detalles del trabajo)**.

   Al hacer referencia a los nodos de entrada en el código, AWS Glue Studio nombra los `DynamicFrames` que devuelven los nodos del diagrama de trabajo de manera secuencial en función del orden de creación. Utilice uno de los siguientes métodos de nomenclatura en el código:
   + Generación de código clásico: utilice nombres funcionales para hacer referencia a los nodos del diagrama de trabajo.
     + Nodo de origen de datos: `DataSource0`, `DataSource1`, `DataSource2`, etc.
     + Nodos de transformación: `Transform0`, `Transform1`, `Transform2`, etc.
   + Nueva generación de código: utilice el nombre especificado en la pestaña **Node properties** (Propiedades del nodo) de un nodo, anexado con ‘`_node1`’, ‘`_node2`’, y así sucesivamente. Por ejemplo, `S3bucket_node1`, `ApplyMapping_node2`, `S3bucket_node2`, `MyCustomNodeName_node1`.

   Para obtener más información acerca del nuevo generador de código, consulte [Generación de código de script](job-editor-features.md#code-gen).

Los siguientes ejemplos muestran el formato del código que se va a introducir en el cuadro de código:

------
#### [ Python ]

En el siguiente ejemplo se toma el primer `DynamicFrame` recibido, se convierte en un valor de `DataFrame` para aplicar el método de filtro nativo (se mantienen solo los registros que tienen más de 1000 votos), luego se convierte nuevamente en un `DynamicFrame` antes de que se devuelva.

```
def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection:
    df = dfc.select(list(dfc.keys())[0]).toDF()
    df_filtered = df.filter(df["vote_count"] > 1000)
    dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes")
    return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
```

------
#### [ Scala ]

En el siguiente ejemplo se toma el primer `DynamicFrame` recibido, se convierte en un valor de `DataFrame` para aplicar el método de filtro nativo (se mantienen solo los registros que tienen más de 1000 votos), luego se convierte nuevamente en un `DynamicFrame` antes de que se devuelva.

```
object FilterHighVoteCounts {
  def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = {
    val frame = input(0).toDF()
    val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext)
    Seq(filtered)
  }
}
```

------

## Edición de esquema para un nodo de transformación personalizado
<a name="transforms-custom-editschema"></a>

Cuando utiliza un nodo de transformación personalizado, AWS Glue Studio no puede inferir automáticamente los esquemas de salida creados por la transformación. Utilice el editor de esquemas para describir los cambios de esquema implementados por el código de transformación personalizado.

Un nodo de código personalizado puede tener cualquier número de nodos principales, cada uno de los cuales proporciona un `DynamicFrame` como entrada para su código personalizado. Un nodo de código personalizado devuelve una recopilación de `DynamicFrames`. Cada `DynamicFrame` que se utiliza como entrada tiene asociado un esquema. Debe agregar un esquema que describa cada `DynamicFrame` devuelto por el nodo de código personalizado. 

**nota**  
 Cuando configura su propio esquema en una transformación personalizada, AWS Glue Studio no hereda esquemas de nodos anteriors. Para actualizar el esquema, seleccione el nodo de transformación personalizada y, a continuación, elija la pestaña Data preview (Vista previa de datos). Una vez generada la vista previa, elija 'Use Preview Schema' (Usar esquema de vista previa). A continuación, el esquema será reemplazado por el esquema utilizando los datos de vista previa. 

**Para editar los esquemas de un nodo de transformación personalizado**

1. Con el nodo de transformación personalizado seleccionado en el diagrama de trabajo, elija la pestaña **Output schema (Esquema de salida)**, en el panel de detalles del nodo. 

1. Seleccione **Edit (Editar)** para realizar cambios al esquema. 

   Si tiene claves de propiedad de datos anidadas, como una matriz u objeto, puede elegir el ícono **Expand-Rows (Expandir filas)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/expand-rows-icon.png)) en la parte superior derecha del panel de cada esquema para expandir la lista de claves de propiedades de datos secundarias. Después de seleccionarlo, el ícono cambia a **Collapse-Rows (Contraer filas)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/collapse-rows-icon.png)), que puede elegir para contraer la lista de claves de propiedad secundarias.

1. Modifique el esquema mediante las siguientes acciones en la sección situada en la parte derecha de la página:
   + Para cambiar el nombre de una clave de propiedad, coloque el cursor en el cuadro de texto **Key (Clave)** para la clave de propiedad y, a continuación, escriba el nuevo nombre.
   + Para cambiar el tipo de datos de una clave de propiedad, utilice la lista para elegir un nuevo tipo de datos para la clave de propiedad.
   + Para agregar una nueva clave de propiedad de nivel superior al esquema, elija el ícono **Overflow (Desbordamiento)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-schema-actions-button.png)) a la izquierda del botón **Cancel (Cancelar)** y luego elija **Add root key (Agregar clave raíz)**.
   + Para agregar una clave de propiedad secundaria al esquema, elija el ícono **Add-Key (Agrega clave)** ![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/filter-add-icon.png) asociado a la clave principal. Escriba un nombre para la clave secundaria y elija el tipo de datos.
   + Para eliminar una clave de propiedad del esquema, elija el ícono **Remove (Eliminar)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/delete-icon-black.png)) en el extremo derecho del nombre de la clave. 

1. Si su código de transformación personalizado utiliza múltiples `DynamicFrames`, puede agregar esquemas de salida adicionales. 
   + Para agregar un esquema nuevo, vacío, elija la opción **Overflow (Desbordamiento)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-schema-actions-button.png)) y, a continuación, elija **Add output schema (Agregar esquema de salida)**.
   + Para copiar un esquema existente en un nuevo esquema de salida, asegúrese de que el esquema que desea copiar se muestra en el selector de esquema. Elija el ícono **Overflow (Desbordamiento)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-schema-actions-button.png)) y, a continuación, elija **Duplicate (Duplicar)**.

   Si desea eliminar un esquema de salida, asegúrese de que el esquema que desea copiar se muestra en el selector de esquema. Elija el ícono **Overflow (Desbordamiento)** (![\[\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-schema-actions-button.png)) y, a continuación, elija **Delete (Eliminar)**.

1. Agregue nuevas claves raíz al nuevo esquema o edite las claves duplicadas. 

1. Cuando modifique los esquemas de salida, elija el botón **Apply (Aplicar)** para guardar los cambios y salir del editor de esquemas.

   Si no desea guardar los cambios, elija **Cancel (Cancelar)**.

## Configurar la salida de transformación personalizada
<a name="transforms-custom-output"></a>

Una transformación de código personalizado devuelve una recopilación de `DynamicFrames`, aún cuando haya solo un `DynamicFrame` en el conjunto de resultados. 

**Para procesar la salida desde un nodo de transformación personalizado**

1. Agregue un nodo de transformación *SelectFromCollection (Seleccionar desde la recopilación)*, que tenga el nodo de transformación personalizado como su nodo principal. Actualice esta transformación para indicar qué conjunto de datos desea utilizar. Para obtener más información, consulte [Uso de SelectFromCollection (Seleccionar desde la recopilación) para elegir qué conjunto de datos desea mantener](transforms-configure-select-collection.md).

1. Agregue una transformación *Seleccionar desde recopilación* adicional al diagrama de trabajo si desea utilizar `DynamicFrames` adicionales, producidos por el nodo de transformación personalizado. 

   Considere un escenario en el que agrega un nodo de transformación personalizado para dividir un conjunto de datos de vuelo en varios conjuntos de datos, pero duplica algunas de las claves de propiedad de identificación en cada esquema de salida, como la fecha de vuelo o el número de vuelo. Agregue un nodo de transformación *Seleccionar desde la recopilación* para cada esquema de salida, con el nodo de transformación personalizado como su nodo principal.

1. (Opcional) a continuación, puede usar cada nodo de transformación *Seleccionar desde la recopilación* como entrada para otros nodos del trabajo, o como nodo principal para un nodo de destino de datos.