Conexión con flujos de datos o data streams
Se admiten los siguientes servicios de streaming en proyectos de Qlik Open Lakehouse. Los datos de eventos se ingieren continuamente para garantizar la disponibilidad en tiempo cuasi real para la integración de datos, análisis e IA posteriores, lo que permite canalizaciones de baja latencia que reflejan la actividad operativa más actual.
Servicios de streaming como Apache Kafka y Amazon Kinesis proporcionan canalizaciones duraderas y de alto rendimiento para capturar eventos operativos a medida que ocurren. A diferencia de las fuentes basadas en archivos que dependen de la ingesta por lotes, las fuentes de streaming entregan datos continuamente a medida que se producen los eventos, lo que permite el procesamiento casi en tiempo real sin esperar a que se generen o programen los archivos. Los productores publican mensajes estructurados o semiestructurados que conservan su esquema y admiten la partición. Todas las actualizaciones y eliminaciones para el mismo registro deben usar la misma clave de partición. Kafka y Kinesis garantizan el orden solo dentro de una única partición o fragmento, no en todo el tema o stream, por lo que usar una clave de partición consistente asegura que los cambios para un registro dado se procesen en la secuencia correcta. Qlik también admite Amazon S3 como fuente de streaming para la ingesta continua de datos de eventos.
Ingesta de streaming frente a ingesta por lotes
La diferencia entre las fuentes de datos de streaming y por lotes es la siguiente:
-
Con ambas fuentes, los eventos se ingieren de manera eficiente cada minuto, lo que permite el procesamiento de baja latencia y el análisis en tiempo prácticamente real.
-
Con las fuentes que no son de streaming, primero se realiza una Carga completa de los datos existentes y luego se ingieren los cambios. También puede recargar los datos de la Carga completa desde la fuente.
-
Con las fuentes de streaming, no hay una distinción clara entre la carga inicial y los eventos posteriores. Qlik puede gestionar la retención y también admite particiones.
En un proyecto de Qlik Open Lakehouse, las fuentes de streaming solo se pueden usar con la tarea de destino de streaming y la tarea de transformación de streaming:
-
Los datos de streaming se ingieren mediante una tarea de destino de streaming y, en lugar de procesar archivos discretos, la tarea de destino de streaming lee los eventos a medida que llegan, deposita los datos en Amazon S3 y persiste los eventos como archivos Avro. Este enfoque preserva la evolución del esquema, admite tipos de datos complejos como las estructuras y proporciona un almacenamiento eficiente con un rendimiento de consulta optimizado, al tiempo que mantiene un modelo de ingesta continua.
-
Cuando incorpora datos de una fuente de streaming, se añade automáticamente una tarea de transformación de streaming para cada conjunto de datos que se almacenará en formato Iceberg. Opcionalmente, la tarea de transformación de streaming se puede utilizar para estandarizar estructuras, enriquecer cargas útiles de eventos o alinear datos con modelos de consumo posteriores.
-
Una tarea de duplicación de datos permite que los conjuntos de datos de fuentes de streaming se dupliquen en almacenes de datos en la nube, lo que permite a los sistemas posteriores consumir eventos de streaming sin duplicar datos.Para obtener más información, consulte Reflejar datos en un almacén de datos en la nube.
Correspondencias entre tipos de datos
El esquema de origen inicial se basa en una muestra de los datos tomada antes de la fase PREPARE al crear su proyecto de canalización, y la evolución del esquema se gestiona en el momento de la lectura. Las tareas de duplicación y otras tareas posteriores que no admiten STRUCT y ARRAY utilizan un tipo JSON. Los datos se pueden analizar mediante SQL.
Las siguientes asociaciones de tipos de datos se aplican a todas las fuentes de datos admitidas, pero varían según el tipo de archivo de origen, y se debe tener en cuenta lo siguiente:
-
Los tipos de datos se infieren de una muestra de los datos que se incorporan. Por ejemplo, si un campo contiene solo valores enteros en la muestra, se crea como INT8 en las tareas de stream de destino/aterrizaje y transformación. Si los datos posteriores incluyen valores fraccionarios de doble precisión, los archivos de destino/aterrizaje contienen esos valores; sin embargo, en la tarea de transformación de Streaming, si la configuración Cambiar tipo de datos de campo se establece en Ignorar, la columna permanece como INT8 y los valores fraccionarios se truncan. Para evitar un truncado no deseado, asegúrese de que los datos de muestra incluyan el rango completo de valores esperados antes de la incorporación, o configure Cambiar tipo de datos de campo en Detener tarea durante las primeras etapas y ajuste los tipos de datos según sea necesario.
-
Si se añade un campo a una estructura en el origen, siempre se añade al destino. Para la transformación del flujo o stream, el comportamiento se aplica según la opción elegida en Configuración de la tarea de transformación de stream > Evolución del esquema > Añadir campos a la estructura (Aplicar al destino, Ignorar, Detener tarea).
-
Si falta un campo en un registro específico, o una matriz está vacía, se tratan como nulos.
-
Si un conjunto de datos se aplana por una matriz, y llega un registro donde esa matriz está vacía o es nula, el sistema crea una fila y el campo aplanado es nulo. No se excluye automáticamente. Si desea excluir estas filas, añada un filtro manualmente, por ejemplo, array_element IS NOT NULL.
-
Los tipos de datos mostrados en la interfaz de usuario reflejan la granularidad del conjunto de datos seleccionado. Para matrices aplanadas, se muestra el tipo de datos del elemento individual en lugar de la propia estructura de la matriz.
-
No se puede añadir un nuevo atributo dentro de una estructura en un campo JSON anidado, solo en el nivel raíz.
-
En las tareas de transformación de streaming, el aplanamiento solo se admite para un único nivel de una matriz. Cuando el aplanamiento se aplica a una matriz multinivel, por ejemplo, ARRAY<ARRAY<STRUCT>>, solo se aplana la matriz externa, lo que da como resultado ARRAY<STRUCT> en lugar de una STRUCT completamente aplanada. Además, la interfaz de usuario actual permite configurar el aplanamiento solo a nivel de columna. Como resultado, la selección de una matriz multinivel aplica implícitamente el aplanamiento solo al primer nivel de la matriz.
JSON
En los archivos JSON, el valor numérico del origen determina el tipo de datos de destino:
-
INT8 se utiliza para valores enteros que se ajustan al rango de enteros admitido y no incluyen un componente fraccionario.
-
REAL8 (DOUBLE) se utiliza cuando el valor contiene un componente fraccionario (número de coma flotante).
-
STRING se utiliza cuando el valor numérico excede el rango máximo de enteros admitido.
Los tipos de datos se asocian de la siguiente manera:
| Tipos de datos de origen | Qlik Talend Data Integration tipos de datos |
|---|---|
| STRING | STRING |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX y SPLIT
Por defecto, todos los tipos de datos de origen se ingieren como una cadena. Use la opción, Inferir tipos automáticamente, para asociar los tipos de origen y destino de la siguiente manera:
| Tipos de datos de origen | Qlik tipos de datos |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | Las marcas de tiempo en el formato yyyy-MM-dd HH:mm:ss o yyyy-MM-ddTHH:mm:ssz se analizan como un tipo de fecha y hora. Si se incluye una zona horaria, el valor se analiza como una cadena de caracteres. |
Parquet
Los archivos Parquet admiten tipos de datos físicos y lógicos. Los tipos de datos físicos definen cómo se almacenan los valores en el disco, como INT32, DOUBLE o BYTE_ARRAY. Los tipos de datos lógicos proporcionan un significado semántico además de la representación física, por ejemplo, identificando si un valor entero representa una fecha. Cuando un tipo lógico se adjunta a una columna Parquet y es compatible con Qlik Open Lakehouse (como se indica a continuación), la tarea de destino de Streaming utiliza el tipo lógico al definir el esquema de destino, en lugar del tipo físico subyacente. Esto garantiza que los datos se interpreten correctamente, preserva la semántica prevista, como la precisión, la escala y el significado temporal, y da como resultado esquemas más precisos cuando los datos se escriben en formatos de downstream.
Los datos obtenidos de archivos Parquet se asocian de la siguiente manera:
| Tipos de datos de origen | Tipos lógicos | Qlik Talend Data Integration tipos de datos |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTE_ARRAY | STRING (Codificado como Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (Codificado como Base64) | |
| BYTE_ARRAY | STRING | STRING |
| BYTE_ARRAY | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | INT8/REAL8 (Codificado como Base64) |
| BYTE_ARRAY | DECIMAL | INT8/REAL8 (Codificado como Base64) |
| INT32 | DATE | DATE |
| INT32 | TIME(MILLIS,true) | INT8 |
| INT64 | TIME(MICROS,true) | TIME |
| INT64 | TIMESTAMP(MICROS,true) | DATETIME |
| INT64 | TIMESTAMP(MILLIS,true) | DATETIME |
| NESTED TYPES | STRUCT | |
| LIST | ARRAY | |
| MAP | ARRAY<STRUCT>. Matriz de estructuras que representan pares clave-valor. |
Avro
Las siguientes asociaciones se aplican a los archivos Avro con registro de esquema.
| Tipos de datos de origen | Tipos lógicos | Qlik Talend Data Integration tipos de datos |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT | INT8 | |
| LONG | INT8 | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTES | STRING | |
| STRING | STRING | |
| RECORD | STRUCT | |
| ENUM | STRING | |
| ARRAY | ARRAY | |
| MAP | ARRAY<STRUCT> | |
| UNION | ||
| FIXED | STRING | |
| BYTES | DECIMAL | DECIMAL |
| FIXED | DECIMAL | DECIMAL |
| INT | DATE | DATE |
| INT | TIME-MILLIS | INT8 |
| INT | TIME-MICROS | TIME |
| LONG | TIMESTAMP-MILLIS | DATETIME |
| LONG | TIMESTAMP-MICROS | DATETIME |
ORC
Las siguientes asignaciones se aplican a los archivos ORC.
| Tipos de datos de origen | Qlik Talend Data Integration tipos de datos |
|---|---|
| BOOLEAN | BOOLEAN |
| BYTE | INT8 |
| SHORT | INT8 |
| INT | INT8 |
| LONG | INT8 |
| DATE | DATE |
| FLOAT | REAL8 |
| DOUBLE | REAL8 |
| TIMESTAMP | DATETIME |
| BINARY | STRING |
| DECIMAL | REAL8 |
| STRING | STRING |
| VARCHAR | STRING |
| CHAR | STRING |
| LIST | ARRAY |
| MAP | ARRAY<STRUCT>. Matriz de estructuras que representan pares clave-valor. |
| STRUCT | STRUCT |
| UNION |
Limitaciones
Las siguientes limitaciones se aplican a todas las fuentes de datos:
-
Si sus archivos son de diferentes tipos, lo que puede ocurrir cuando provienen de múltiples fuentes o versiones, la tarea de transformación creada utilizando un único archivo de muestra (por ejemplo, durante la incorporación) no tiene en cuenta automáticamente esas diferencias.
-
Si cambia los tipos de datos en la tarea de destino, por ejemplo porque necesita aplicar hash a los datos, asegúrese de que los tipos de datos de transformación coincidan con los nuevos tipos de datos.