Dati in streaming
Il processo di onboarding trasferisce i dati dalla sorgente e li archivia in tabelle Iceberg. Le modifiche dalle sorgenti dati in streaming vengono applicate continuamente alle tabelle di archiviazione quasi in tempo reale.
Onboarding dei dati
L'onboarding dei dati avviene all'interno di un progetto di pipeline e i set di dati vengono archiviati nella posizione S3 definita nelle impostazioni del progetto.
-
Nel progetto, fare clic su Crea e quindi su Onboarding dei dati.
-
Aggiungere un Nome attività e una Descrizione opzionale per l'onboarding.
Fare clic su Avanti.
-
Selezionare la connessione di origine.
È possibile selezionare una connessione di origine in streaming esistente o creare una nuova connessione all'origine.
Per ulteriori informazioni, vedere Connessione ai flussi di dati
Fare clic su Avanti e seguire le istruzioni di seguito per la propria sorgente dati.
Selezione dei dati
Apache Kafka
L'elenco visualizza gli argomenti Kafka disponibili dal cluster definito nella connessione di origine.
Quando si selezionano gli argomenti, è possibile selezionare set di dati specifici. È inoltre possibile utilizzare regole di selezione per includere o escludere gruppi di set di dati:
-
Utilizzare % come carattere jolly per definire criteri di selezione per i set di dati.
Se gli argomenti vengono selezionati utilizzando regole di selezione, è possibile scegliere se caricare tutti i set di dati nella stessa tabella di destinazione o creare una tabella di destinazione separata per ogni argomento di origine:
-
Per impostazione predefinita, il nome della tabella Iceberg di destinazione deriva dal nome dell'argomento, formattato per rispettare le convenzioni di denominazione, ad esempio, lettere minuscole, spazi rimossi, trattini sostituiti con trattini bassi. In Definisci nome set di dati di destinazione, è possibile modificare il nome della tabella di destinazione
-
Quando si utilizzano regole di selezione per caricare più argomenti in una singola tabella, è necessario fornire il nome di destinazione.
-
Quando si utilizzano regole di selezione e i dati vengono caricati in tabelle separate (un set di dati per argomento), i nomi di destinazione predefiniti sono i nomi degli argomenti. In questa fase, non è possibile modificare i nomi nella procedura guidata, ma è possibile farlo in seguito nell'attività di trasferimento.
-
Se una regola è configurata per selezionare gli argomenti per l'inserimento, anche i nuovi argomenti che soddisfano i criteri della regola vengono trasferiti se l'opzione Nuovo argomento > Aggiungi alla destinazione in evoluzione dello schema nelle impostazioni dell'attività di trasferimento è selezionata.
Selezionare uno o più set di dati, oppure utilizzare una regola di selezione, e fare clic su Aggiungi. Fare clic su Avanti.
Amazon Kinesis
L'elenco visualizza i flussi Kinesis disponibili definiti nella connessione di origine.
Selezionare uno o più set di dati e fare clic su Aggiungi. È possibile visualizzare i set di dati aggiunti in Flussi selezionati. Fare clic su Avanti.
Amazon S3
Il browser delle directory visualizza un elenco di tutte le directory situate nel bucket S3 della propria connessione di origine.
-
Selezionare le directory da includere durante il trasferimento dei dati:
-
Per ogni directory, in Aggiungi percorso, inserire il percorso e il modello del nome file:
-
Utilizzare * come carattere jolly per corrispondere a qualsiasi carattere.
-
Per inserire un modello di data, utilizzare <yyyy> come segnaposto per l'anno a quattro cifre, <MM> come segnaposto per il mese a due cifre, <dd> come segnaposto per il giorno a due cifre e <HH> come segnaposto per l'ora a due cifre. Ad esempio:
-
MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv
-
MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv
-
-
-
-
Fare clic su Anteprima per aprire la finestra di dialogo Anteprima dati. Viene visualizzato un elenco di file inclusi ed esclusi.
-
Fare clic su Convalida per verificare che i percorsi e i modelli dei nomi file siano corretti e funzionali.
-
In Definisci nome set di dati di destinazione, fornire un nome per mappare l'argomento alla tabella Iceberg di destinazione. Fare clic su Avanti.
Selezione del tipo di contenuto
Scegliere il tipo di contenuto degli eventi di origine.
-
Selezionare il tipo di eventi che si stanno inserendo in Scegli il tipo di eventi dati.
-
Per ulteriori informazioni, vedere Connessione ai flussi di dati.
Il tipo di contenuto selezionato si applica a tutti gli argomenti, set di dati o eventi dati. È necessario creare una nuova attività per ogni tipo di contenuto che si desidera inserire.
-
Espandere Verifica che gli eventi siano caricati correttamente per confermare che i dati possano essere analizzati. È consigliabile assicurarsi che i dati siano corretti in questa fase, altrimenti sarà necessario ricreare la pipeline e caricare nuovamente i dati. Utilizzare Seleziona set di dati per esaminare set di dati specifici e controllare eventuali avvisi che potrebbero influire sul caricamento dei dati. Fare clic sull'icona a forma di occhio accanto a qualsiasi colonna struct per visualizzare i dati.
-
Fare clic su Avanti.
Impostazione delle proprietà di inserimento
Configurare le impostazioni per la propria pipeline:
-
Leggi dati da
-
Inizia dal primo evento: inserisce tutti i dati storici.
-
Inizia da ora: inserisce i nuovi dati in arrivo dal momento in cui viene avviata la pipeline.
-
-
Annullamento nidificazione colonne
-
Mantieni colonne nidificate: non viene applicata alcuna trasformazione.
-
Annulla nidificazione in colonne separate: i dati vengono suddivisi in colonne separate.
-
-
Impostazioni di caricamento per nuovi set di dati
-
Solo accodamento: generalmente l'opzione migliore per i dati degli eventi in quanto di solito hanno una durata breve e non vengono aggiornati, ad esempio, Ordini.
-
Applica modifiche: questa opzione è più adatta ai dati che vengono aggiornati nel tempo, ad esempio, Clienti. Aggiorna i record esistenti e inserisce nuovi record in base ai campi chiave. Sarà necessario specificare i campi chiave in seguito durante la definizione dell'attività.
-
-
Partizione tabella di destinazione
L'opzione di partizione della tabella di destinazione si applica a tutte le tabelle nella pipeline. È possibile sovrascriverla in seguito a livello di tabella per definire un partizionamento personalizzato.
Nota informaticaQuesta opzione è disponibile solo quando si seleziona Solo accodamento in Impostazioni di caricamento.-
Nessuna partizione: le tabelle vengono create senza alcun partizionamento.
-
Partiziona per data di inserimento evento: le tabelle vengono partizionate in base alla data in cui vengono inseriti gli eventi.
Nota informaticaQuando questa opzione è selezionata insieme all'opzione della colonna di intestazione hdr__from_timestamp, hdr__from_timestamp verrà utilizzata come colonna di partizione predefinita. Per informazioni sull'aggiunta della colonna di intestazione hdr__from_timestamp alle viste standard, vedere Definizioni di tabella.
-
-
Gestione modifiche dati
Nota informaticaQuesta opzione è disponibile solo quando si seleziona Applica modifiche in Impostazioni di caricamento.-
Includi eliminazioni temporanee: inserire un'espressione per definire quali record contrassegnare per l'eliminazione.
-
Crea un archivio dati storico (Tipo 2): questo manterrà le versioni precedenti dei record modificati.
-
-
Fare clic su Avanti.
Riepilogo
La schermata di riepilogo fornisce una visualizzazione grafica della propria pipeline:
-
Facoltativamente, per l'attività di trasferimento in streaming e di trasformazione in streaming, è possibile fare clic su Modifica nome e descrizione per fornire nuovi valori.
-
Selezionare l'opzione per ciò che si desidera accada Dopo la creazione della pipeline.
-
Dopo aver configurato tutte le impostazioni, fare clic su Crea per creare la pipeline in streaming.
-
Quando viene visualizzato il progetto, è possibile preparare ed eseguire ogni attività per iniziare a inserire i dati.
-
Preparare ed eseguire l'attività di trasferimento in streaming.
Per ulteriori informazioni, vedere Trasferimento di dati in streaming su Qlik Open Lakehouse.
-
Preparare ed eseguire l'attività di trasformazione in streaming.
Per ulteriori informazioni, vedere Archiviazione di set di dati in flusso.
-
Mappature dei tipi di dati
Lo schema di origine iniziale si basa su un campione dei dati prelevato prima della fase PREPARA durante la creazione del progetto di pipeline e l'evoluzione dello schema viene gestita in fase di lettura. Le attività di mirroring e altre attività a valle che non supportano STRUCT e ARRAY utilizzano un tipo JSON. I dati possono essere analizzati utilizzando SQL.
Le seguenti mappature dei tipi di dati si applicano a tutte le sorgenti dati supportate, ma variano in base al tipo di file di origine, e occorre notare quanto segue:
-
I tipi di dati vengono dedotti da un campione dei dati in fase di onboarding. Ad esempio, se un campo contiene solo valori interi nel campione, viene creato come INT8 nelle attività di trasferimento e trasformazione in streaming. Se i dati successivi includono valori frazionari a doppia precisione, i file di trasferimento contengono tali valori; tuttavia, nell'attività di trasformazione in streaming, se l'impostazione Modifica tipo di dati campo è impostata su Ignora, la colonna rimane INT8 e i valori frazionari vengono troncati. Per evitare troncamenti involontari, assicurarsi che i dati campione includano l'intera gamma di valori previsti prima dell'onboarding, oppure configurare Modifica tipo di dati campo su Interrompi attività durante le fasi iniziali e regolare i tipi di dati secondo necessità.
-
Se un campo viene aggiunto a una struct nell'origine, viene sempre aggiunto alla destinazione di trasferimento. Per la trasformazione in streaming, il comportamento viene applicato in base all'opzione scelta in Impostazioni attività di trasformazione in streaming > Evoluzione schema > Aggiungi campi a struct (Applica alla destinazione, Ignora, Interrompi attività).
-
Se un campo manca in un record specifico o un array è vuoto, vengono trattati come null.
-
Se un set di dati viene appiattito da un array e arriva un record in cui tale array è vuoto o null, il sistema crea una riga e il campo appiattito è null. Non viene escluso automaticamente. Se si desidera escludere queste righe, aggiungere manualmente un filtro, ad esempio, array_element IS NOT NULL.
-
I tipi di dati visualizzati nell'interfaccia utente riflettono la granularità del set di dati selezionato. Per gli array appiattiti, viene mostrato il tipo di dati del singolo elemento anziché la struttura dell'array stessa.
-
Non è possibile aggiungere un nuovo attributo all'interno di una struct in un campo JSON nidificato, ma solo a livello di radice.
-
Nelle attività di trasformazione in streaming, l'appiattimento è supportato solo per un singolo livello di un array. Quando l'appiattimento viene applicato a un array multilivello, ad esempio, ARRAY<ARRAY<STRUCT>>, viene appiattito solo l'array esterno, risultando in ARRAY<STRUCT> anziché in una STRUCT completamente appiattita. Inoltre, l'interfaccia utente corrente consente di configurare l'appiattimento solo a livello di colonna. Di conseguenza, la selezione di un array multilivello applica implicitamente l'appiattimento solo al primo livello dell'array.
-
Quando si fa riferimento a un array di primitive, viene utilizzato il tipo di dati dell'elemento se la granularità è l'array. Altrimenti viene utilizzato il tipo di dati dell'array.
In questo esempio, OrderDetails ha un array di CustomerID di tipo di dati INT. OrderDetails.CustomerID significa INT se la granularità è OrderDetails.CustomerID e ARRAY<INT> se la granularità è OrderDetails.
JSON
Nei file JSON, il valore numerico nell'origine determina il tipo di dati di destinazione:
-
INT8 viene utilizzato per i valori interi che rientrano nell'intervallo di interi supportato e non includono un componente frazionario.
-
REAL8 (DOUBLE) viene utilizzato quando il valore contiene un componente frazionario (numero in virgola mobile).
-
STRING viene utilizzato quando il valore numerico supera l'intervallo di interi massimo supportato.
I tipi di dati sono mappati come segue:
| Tipi di dati di origine | Tipi di dati Qlik Talend Data Integration |
|---|---|
| STRING | STRING |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX e SPLIT
Per impostazione predefinita, tutti i tipi di dati di origine vengono inseriti in una stringa. Utilizzare l'opzione Deduci automaticamente i tipi per mappare i tipi di origine e di destinazione come segue:
| Tipi di dati di origine | Tipi di dati Qlik |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | I timestamp nel formato yyyy-MM-dd HH:mm:ss o yyyy-MM-ddTHH:mm:ssz vengono analizzati in un tipo datetime. Se è incluso un fuso orario, il valore viene analizzato come stringa. |
Parquet
I file Parquet supportano tipi di dati fisici e logici. I tipi di dati fisici definiscono come i valori vengono archiviati su disco, come INT32, DOUBLE o BYTE_ARRAY. I tipi di dati logici forniscono un significato semantico oltre alla rappresentazione fisica, ad esempio, identificando se un valore intero rappresenta una data. Quando un tipo logico è associato a una colonna Parquet ed è supportato in Qlik Open Lakehouse (come elencato di seguito), l'attività di trasferimento in streaming utilizza il tipo logico durante la definizione dello schema di destinazione, anziché il tipo fisico sottostante. Ciò garantisce che i dati vengano interpretati correttamente, preserva la semantica prevista come precisione, scala e significato temporale e si traduce in schemi più accurati quando i dati vengono scritti in formati a valle.
I dati provenienti dai file Parquet sono mappati come segue:
| Tipi di dati di origine | Tipi logici | Tipi di dati Qlik Talend Data Integration |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTE_ARRAY | STRING (Codificato come Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (Codificato come Base64) | |
| BYTE_ARRAY | STRING | STRING |
| BYTE_ARRAY | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | INT8/REAL8 (Codificato come Base64) |
| BYTE_ARRAY | DECIMAL | INT8/REAL8 (Codificato come 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>. Array di struct che rappresentano coppie chiave-valore. |
Avro
Le seguenti mappature si applicano ai file Avro con registro degli schemi.
| Tipi di dati di origine | Tipi logici | Tipi di dati Qlik Talend Data Integration |
|---|---|---|
| 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
Le seguenti mappature si applicano ai file ORC.
| Tipi di dati di origine | Tipi di dati Qlik Talend Data Integration |
|---|---|
| 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>. Array di struct che rappresentano coppie chiave-valore. |
| STRUCT | STRUCT |
| UNION |
Limitazioni e considerazioni
-
Se una struttura o un array viene modificato dall'evoluzione automatica dello schema nel trasferimento, le viste a valle che non sono state create da un'attività in streaming di Qlik Talend Cloud potrebbero dover essere aggiornate per non risultare obsolete.
-
Se un'attività presenta errori di analisi, non passerà a uno stato di errore e non verrà contrassegnata come richiedente attenzione. Poiché gli errori di analisi sono una metrica in costante aumento, non esiste alcun criterio di uscita per uno stato di errore.
-
La rimozione di una funzionalità del cluster è consentita solo se non ci sono attività che utilizzano tale funzionalità.
-
Gli aggiornamenti e le eliminazioni di un record con la stessa chiave primaria non devono oltrepassare il limite della partizione, ovvero devono essere mappati alla stessa partizione.
-
Se un'origine contiene un numero elevato di colonne, solo le prime 500 colonne per frequenza vengono visualizzate nelle attività e nel catalogo. Tutte le colonne vengono salvate nei file Avro nel trasferimento S3, ma solo le prime 500 colonne vengono archiviate nelle tabelle Iceberg. Nell'evoluzione dello schema, se viene aggiunta una nuova colonna, non verrà aggiunta alle colonne principali anche se è frequente.