Crear una transformación personalizada
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
Para agregar un nodo de transformación personalizado al diagrama de trabajo
-
(Opcional) abra el panel de recursos y elija Custom transform para agregar una nueva transformación al diagrama de trabajo, si es necesario.
-
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
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
-
Con el nodo de transformación personalizado seleccionado en el diagrama de trabajo, elija la pestaña Transform (Transformación).
-
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.
-
Los siguientes ejemplos muestran el formato del código que se va a introducir en el cuadro de código:
Edición de esquema para un nodo de transformación personalizado
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
-
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.
-
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) ( ) 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) ( ), que puede elegir para contraer la lista de claves de propiedad secundarias.
-
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) ( ) 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) 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) ( ) en el extremo derecho del nombre de la clave.
-
-
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) ( ) 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) ( ) 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) ( ) y, a continuación, elija Delete (Eliminar).
-
-
Agregue nuevas claves raíz al nuevo esquema o edite las claves duplicadas.
-
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
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
-
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.
-
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.
-
(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.