
En un reciente entrada en el blog, discutí la creación de tablas dinámicas con gráficos de Generación 2. Hubo una pregunta sobre cómo se pueden usar operadores de tablas de estructura como Data Transform o Table Producer con un operador de Kafka y un operador de Python usando gráficos de Generación 1. Esta combinación requeriría que el gráfico construyera una tabla y usara un puerto «tipo tabla» para pasar la información a los operadores de Transformación de datos o Productor de tablas. En este blog, describiré cómo conectar y llenar puertos usando un puerto «tipo tabla» de Python.
Primero deberá crear un gráfico de Generación 1, presione el botón de configuración en la parte superior derecha para que aparezca la configuración del gráfico. El «ConfiguraciónEl botón ” está enmarcado en rojo en la parte superior derecha de la imagen a continuación.
Luego presione el botón “+” para agregar un tipo de datos locales a la definición del gráfico. Este botón está enmarcado en rojo en la parte inferior derecha de la imagen de arriba. Usamos tipos de datos locales ya que proporcionan un medio para especificar longitudes para datos de cadena. Aparecerá el siguiente cuadro de diálogo.
Seleccionar «Mesa” y proporcione un nombre como se muestra arriba. Presiona en el “DE ACUERDO» botón. Aparecerá un cuadro de diálogo que le permitirá crear una definición de tabla. Proporcione una descripción y luego presione el botón “+” en un círculo rojo debajo para agregar una columna. Para simplificar las cosas, crearemos una tabla de dos columnas con los tipos de datos entero y cadena.
Proporcione el nombre de la columna y seleccione el tipo de datos de «com.sap.core.int32” en el menú desplegable. Y presione el botón «+” de nuevo para crear una segunda columna.
Proporcione un nombre para la segunda columna y seleccione el botón de radio que se asigna a «Crear” un tipo de datos. Proporcione un nombre para el tipo de datos, a continuación uso «mystr50». Seleccionar «cadena» desde el Plantilla Menú desplegable. Proporcione una longitud para el tipo de datos de cadena. Nota: las tablas estructuradas deben tener un límite de tamaño. Lo que está haciendo aquí es crear un tipo de datos local llamado mystr50 con una definición de cadena y un tamaño de 50.
Presione el «Ahorrar» botón. Ahora verá dos nuevos tipos de datos locales para el gráfico, como se muestra a continuación en la configuración del gráfico.
Arrastre el Operador de Python3 al lienzo. Abra el editor de secuencias de comandos pasando el cursor sobre el operador y haciendo clic en el icono de secuencia de comandos que está en negrita en la imagen a continuación.
En el script agregue el siguiente código.
def gen():
body = [[1, 'Row1'], [2, 'Row2'] ]
type_id ="mytbl"
batch1 = api.Table(body, type_id, {"lastBatch": False})
body = [[3, 'Row3'], [4, 'Row4'] ]
batch2 = api.Table(body, type_id, {"lastBatch": True})
api.send("output", batch1)
api.send("output", batch2)
api.add_generator(gen)
Este código usa el método api.Table para generar dos lotes. Es importante tener en cuenta que el encabezado «lastBatch» se establece para cada lote. Batch1 está configurando el encabezado en falso ya que se esperan más filas, mientras que Batch2 está configurando el encabezado en True ya que este es el último lote. Si omite este encabezado, es posible que no obtenga el comportamiento deseado. El código también especifica type_id como «mytbl» para que esté completo.
A continuación, desplace el cursor sobre el Operador de Python y presione el botón «Agregar puerto” que está en negrita a continuación.
Proporcione el nombre “producción” para el puerto y seleccione “Puerto de salida” y seleccione “Mesa” como el tipo de datos. Si no proporciona el nombre como «salida», el código anterior no funcionará, ya que espera un puerto llamado «salida».
Seleccione el local “mitbl” ID de tipo de datos del cuadro de diálogo.
Presione el «Seleccionar» botón. Presione el «DE ACUERDO» botón.
Arrastre un «Productor de mesa” al lienzo y conecte el operador de Python3 al operador “Table Producer. También puede arrastrar el operador «Transformación de datos» al lienzo, pero para simplificar, usaremos el «Productor de tablas». Tenga en cuenta que puede conectar estos dos operadores. Si no tiene el tipo de datos configurado correctamente, es posible que no puedan conectarse.
Abre la configuración de “Table Producer”. Especifique la tabla de destino presionando el lápiz en el cuadro de configuración «Productor de tablas» en rojo a continuación.
Seleccione una tabla adecuada para sus datos y especifique la asignación de columnas.
Arrastrar el «toque de alambre” al lienzo y conecte el “Productor de mesa” al operador “Intervención telefónica”.
Guarde y ejecute el gráfico. Cuando ejecuta el gráfico, el operador Wiretap debería generar el siguiente mensaje o algo similar según el nombre de su tabla.
Esperemos que ahora tenga la base de cómo usar/generar tipos de datos de tablas estructuradas.
Buena suerte.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073