Strömmande data
Introduktionsprocessen överför data från källan och lagrar den i Iceberg-tabeller. Ändringar från de strömmande datakällorna tillämpas kontinuerligt på lagringstabellerna i nära realtid.
Introducera data
Data introduceras inom ett pipelineprojekt och datamängder lagras på den S3-plats som definieras i projektinställningarna.
-
I projektet klickar du på Skapa och sedan på Introducera data.
-
Lägg till ett Uppgiftsnamn och en valfri Beskrivning för introduktionen.
Klicka på Nästa.
-
Välj källkoppling.
Du kan välja en befintlig strömmande källkoppling eller skapa en ny koppling till källan.
Mer information finns i Ansluta till dataströmmar
Klicka på Nästa och följ anvisningarna nedan för din datakälla.
Välja data
Apache Kafka
Listan visar tillgängliga Kafka-ämnen från klustret som definierats i källkopplingen.
När du väljer dina ämnen kan du välja specifika datauppsättningar. Du kan också använda urvalsregler för att inkludera eller exkludera grupper av datauppsättningar:
-
Använd % som jokertecken för att definiera urvalskriterier för datamängderna.
Om ämnen väljs med hjälp av urvalsregler kan du välja om alla datamängder ska läsas in i samma måltabell eller om en separat måltabell ska skapas för varje källämne:
-
Som standard härleds måltabellens Iceberg-namn från ämnesnamnet, formaterat för att följa namngivningskonventioner, till exempel gemener, borttagna mellanslag, bindestreck ersatta med understreck. I Definiera måldatamängdsnamn kan du redigera namnet på måltabellen
-
När urvalsregler används för att läsa in flera ämnen i en enda tabell måste du ange målnamnet.
-
När urvalsregler används och data läses in i separata tabeller (en datauppsättning per ämne) är standardmålnamnen ämnesnamnen. I det här skedet kan du inte redigera namnen i guiden, men detta kan göras senare i mellanlagringsuppgiften.
-
Om en regel är konfigurerad för att välja ämnen för inmatning, mellanlagras även nya ämnen som uppfyller regelkriterierna om alternativet Nytt ämne > Lägg till i mål under schemautveckling i inställningarna för mellanlagringsuppgiften är markerat.
Välj en eller flera datauppsättningar, eller använd en urvalsregel, och klicka på Lägg till. Klicka på Nästa.
Amazon Kinesis
Listan visar tillgängliga Kinesis-strömmar som definierats i källkopplingen.
Välj en eller flera datauppsättningar och klicka på Lägg till. Du kan se de tillagda datauppsättningarna under Valda strömmar. Klicka på Nästa.
Amazon S3
Katalogbläddraren visar en lista över alla kataloger som finns i S3-bucket för din källkoppling.
-
Välj de kataloger som ska användas vid mellanlagring av data:
-
För varje katalog, i Lägg till sökväg, ange sökvägen och filnamnsmönstret:
-
Använd * som ett jokertecken för att matcha valfritt tecken.
-
För att ange ett datumformat, använd <yyyy> som platshållare för det fyrställiga året, <MM> som platshållare för den tvåställiga månaden, <dd> som platshållare för den tvåställiga dagen och <HH> som platshållare för den tvåställiga timmen. Exempel:
-
MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv
-
MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv
-
-
-
-
Klicka på Förhandsgranska för att öppna dialogrutan Förhandsgranska data. En lista över inkluderade och uteslutna filer visas.
-
Klicka på Validera för att kontrollera att sökvägarna och filnamnsmönstren är korrekta och fungerande.
-
I Definiera måldatasetnamn anger du ett namn för att mappa ämnet till måltabellen Iceberg. Klicka på Nästa.
Välja innehållstypen
Välj innehållstyp för källhändelser.
-
Välj vilken typ av händelser du matar in i Välj typ av datahändelser.
-
Mer information finns i Ansluta till dataströmmar.
Den valda innehållstypen gäller för alla ämnen, datauppsättningar eller datahändelser. Du måste skapa en ny uppgift för varje innehållstyp du vill mata in.
-
Expandera Verifiera att händelserna har lästs in korrekt för att bekräfta att data kan parsas. Det är en bra idé att säkerställa att data är korrekt i detta skede, annars måste du återskapa pipelinen och ladda data igen. Använd Välj datamängd för att granska specifika datamängder och kontrollera eventuella varningar som kan påverka inläsningen av data. Klicka på ögonikonen bredvid valfri strukturkolumn för att visa data.
-
Klicka på Nästa.
Ställa in inmatningsegenskaper
Konfigurera inställningarna för din pipeline:
-
Läsa in data från
-
Börja från den tidigaste händelsen: mata in all historisk data.
-
Börja från nu: mata in ny data som anländer från den tidpunkt då pipelinen startar.
-
-
Avnästling av kolumner
-
Behåll kapslade kolumner: inga transformationer tillämpas.
-
Dela upp i separata kolumner: data delas upp i separata kolumner.
-
-
Läs in inställningar för nya datauppsättningar
-
Endast tillägg: generellt det bästa alternativet för händelsedata då den oftast har en kort livslängd och inte uppdateras, till exempel, Order.
-
Tillämpa ändringar: detta passar bäst för data som uppdateras över tid, till exempel Kunder. Uppdaterar befintliga poster och infogar nya poster baserat på nyckelfält. Du kommer att behöva specificera nyckelfälten senare när du definierar uppgiften.
-
-
Partitionerad måltabell
Alternativet för partitionering av måltabell gäller alla tabeller i pipelinen. Du kan åsidosätta detta senare på tabellnivå för att definiera anpassad partitionering.
Anteckning om informationDet här alternativet är endast tillgängligt när Endast lägg till är valt i Inläsningsinställningar.-
Ingen partitionering: tabeller skapas utan någon partitionering.
-
Partitionering utifrån inhämtning av händelse: tabeller partitioneras utifrån det datum då händelser inhämtas.
-
-
Hantering av dataförändring
Anteckning om informationDet här alternativet är endast tillgängligt när Tillämpa ändringar är valt i Inläsningsinställningar.-
Inkludera mjuka borttagningar: Ange ett uttryck för att definiera vilka poster som ska markeras för borttagning.
-
Skapa ett historiskt datalager (Typ 2): Detta kommer att behålla tidigare versioner av ändrade poster.
-
-
Klicka på Nästa.
Sammanfattning
Sammanfattningsskärmen ger en visuell översikt över din pipeline:
-
Valfritt, för Streaming-mellanlagring och Streaming Transform-uppgiften kan du klicka på Redigera namn och beskrivning för att ange nya värden.
-
Välj alternativet för vad du vill ska hända När pipelinen har skapats.
-
När du har konfigurerat alla inställningar klickar du på Skapa för att skapa den strömmande pipelinen.
-
När projektet visas kan du förbereda och köra varje uppgift för att börja mata in data.
-
Förbered och kör Streaming-mellanlagringsuppgiften.
Mer information finns i Mellanlagring av strömmande data till Qlik Open Lakehouse.
-
Förbered och kör Streaming-transformeringsuppgiften.
Mer information finns i Lagra strömmande datauppsättningar.
-
Datatypsmappningar
Det ursprungliga källschemat baseras på ett urval av data som tagits före FÖRBEREDELSE-fasen när du skapar ditt pipelineprojekt, och schemautveckling hanteras vid läsning. Speglingsuppgifter och andra nedströmsuppgifter som inte stöder STRUCT och ARRAY använder en JSON-typ. Data kan parsas med SQL.
Följande datatypsmappningar gäller för alla datakällor som stöds, men varierar beroende på källfilstypen, och följande bör noteras:
-
Datatyper härleds från ett urval av de data som läggs till. Om ett fält till exempel endast innehåller heltalsvärden i urvalet, skapas det som INT8 i strömmande mellanlagrings- och transformeringsuppgifterna. Om efterföljande data inkluderar flyttalsvärden med dubbel precision, innehåller mellanlagringsfilerna dessa värden; men i strömmande transformeringsuppgiften, om inställningen Ändra fältdatatyp är inställd på Ignorera, förblir kolumnen INT8 och flyttalsvärdena trunkeras. För att undvika oavsiktlig trunkering, se till att exempeldata innehåller hela intervallet av förväntade värden innan onboarding, eller konfigurera Ändra fältets datatyp till Stoppa uppgift under tidiga skeden och justera datatyper vid behov.
-
Om ett fält läggs till en struct i källan, läggs det alltid till mellanlagringsmålet. För strömmande transformering tillämpas beteendet enligt det alternativ som valts i Inställningar för strömmande transformeringsuppgift > Schemautveckling > Lägg till fält i struct (Tillämpa på mål, Ignorera, Stoppa uppgift).
-
Om ett fält saknas i en specifik post, eller om en array är tom, behandlas de som null.
-
Om en datamängd plattas ut av en array, och en post anländer där den arrayen är tom eller null, skapar systemet en rad och det utplattade fältet är null. Det utesluts inte automatiskt. Om du vill utesluta dessa rader lägger du manuellt till ett filter, till exempel array_element IS NOT NULL.
-
Datatyperna som visas i användargränssnittet återspeglar detaljnivån i den valda datauppsättningen. För utplattade arrayer visas datatypen för det enskilda elementet snarare än själva arraystrukturen.
-
Ett nytt attribut kan inte läggas till i en struktur inom ett kapslat JSON-fält, endast på rotnivå.
-
I strömmande transformeringsuppgifter stöds utplattning endast för en enda nivå av en array. När utplattning tillämpas på en flernivåarray, till exempel ARRAY<ARRAY<STRUCT>>, plattas endast den yttre arrayen ut, vilket resulterar i ARRAY<STRUCT> snarare än en helt utplattad STRUCT. Dessutom tillåter det nuvarande användargränssnittet att utplattning konfigureras endast på kolumnnivå. Som ett resultat tillämpar val av en flernivåarray implicit utplattning endast på den första arraynivån.
-
När du refererar till en matris av primitiva typer används elementets datatyp om granulariteten är matrisen. Annars används matrisens datatyp.
I det här exemplet har OrderDetails en matris med CustomerID av datatypen INT. OrderDetails.CustomerID betyder INT om granulariteten är OrderDetails.CustomerID och ARRAY<INT> om granulariteten är OrderDetails.
JSON
I JSON-filer bestämmer det numeriska värdet i källan måldatatypen:
-
INT8 används för heltalsvärden som ryms inom det intervall för heltal som stöds och inte innehåller en bråkdel.
-
REAL8 (DOUBLE) används när värdet innehåller en bråkdel (flyttalsnummer).
-
STRING används när det numeriska värdet överskrider det maximala intervall för heltal som stöds.
Datatyper mappas på följande sätt:
| Källdatatyper | Qlik Talend Data Integration datatyper |
|---|---|
| STRING | STRING |
| TAL | INT8 |
| TAL | REAL8 |
| TAL | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX, och SPLIT
Som standard matas alla källdatatyper in som en sträng. Använd alternativet, Inferera typer automatiskt, för att mappa käll- och måldatatyper enligt följande:
| Källdatatyper | Qlik datatyper |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | Tidsstämplar i formatet yyyy-MM-dd HH:mm:ss eller yyyy-MM-ddTHH:mm:ssz parsas till en datetime-typ. Om en tidszon inkluderas, parsas värdet som en sträng. |
Parquet
Parquet-filer stöder fysiska och logiska datatyper. Fysiska datatyper definierar hur värden lagras på disk, till exempel INT32, DOUBLE eller BYTE_ARRAY. Logiska datatyper ger semantisk mening utöver den fysiska representationen, till exempel genom att identifiera om ett heltalsvärde representerar ett datum. När en logisk typ är kopplad till en Parquet-kolumn och stöds i Qlik Open Lakehouse (som anges nedan), använder Streaming-mellanlagringsuppgiften den logiska typen när målschemat definieras, snarare än den underliggande fysiska typen. Detta säkerställer att data tolkas korrekt, bevarar avsedd semantik som precision, skala och tidsmässig betydelse, och resulterar i mer exakta scheman när data skrivs till nedströmsformat.
Data som hämtas från Parquet-filer mappas enligt följande:
| Källdatatyper | Logiska typer | Qlik Talend Data Integration datatyper |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| byte-array | STRÄNG (kodad som Base64) | |
| byte-array med fast längd | STRING (Kodad som Base64) | |
| byte-array | STRING | STRING |
| byte-array | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| byte-array med fast längd | DECIMAL | INT8/REAL8 (Kodad som Base64) |
| byte-array | DECIMAL | INT8/REAL8 (Kodad som Base64) |
| INT32 | DATE | DATE |
| INT32 | TIME(MILLIS,true) | INT8 |
| INT64 | TIME(MICROS,true) | TIME |
| INT64 | TIMESTAMP(MICROS,true) | DATETIME |
| INT64 | TIMESTAMP(MILLIS,true) | DATETIME |
| KAPSLADE TYPER | STRUCT | |
| LISTA | ARRAY | |
| MAP | ARRAY<STRUKTUR>. Matris av strukturer som representerar nyckel-värde-par. |
Avro
Följande mappningar gäller för Avro-filer med schemaregister.
| Källdatatyper | Logiska typer | Qlik Talend Data Integration datatyper |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT | INT8 | |
| LONG | INT8 | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTES | STRING | |
| STRING | STRING | |
| POST | STRUCT | |
| ENUM | STRING | |
| ARRAY | ARRAY | |
| MAP | ARRAY<STRUKTUR> | |
| FÖRENA | ||
| FASTA | STRING | |
| BYTES | DECIMAL | DECIMAL |
| FASTA | DECIMAL | DECIMAL |
| INT | DATE | DATE |
| INT | TID-MILLIS | INT8 |
| INT | TIME-MICROS | TIME |
| LONG | TIMESTAMP-MILLIS | DATETIME |
| LONG | TIDSSTÄMPEL-MIKROSEKUNDER | DATETIME |
ORC
Följande mappningar gäller för ORC-filer.
| Källdatatyper | Qlik Talend Data Integration datatyper |
|---|---|
| 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 |
| LISTA | ARRAY |
| MAP | ARRAY<STRUKTUR>. Matris av strukturer som representerar nyckel-värde-par. |
| STRUCT | STRUCT |
| Förena |
Begränsningar och överväganden
-
Om en struktur eller matris ändras av automatisk schemaevolution i mellanlagringen, kan nedströmsvyer som inte skapades av en Qlik Talend Cloud strömningsuppgift behöva uppdateras för att inte bli inaktuella.
-
Om en uppgift har parsingsfel kommer den inte att hamna i ett feltillstånd och kommer inte att markeras som att den kräver uppmärksamhet. Eftersom parsingsfel är ett ständigt ökande mått finns det inget utgångskriterium för ett feltillstånd.
-
Att ta bort en klusterfunktion är endast tillåtet om det inte finns några uppgifter som använder den funktionen.
-
Uppdateringar och borttagningar av en post med samma primärnyckel får inte korsa partitionsgränsen, det vill säga de måste mappas till samma partition.
-
Om en källa innehåller ett stort antal kolumner, visas endast de 500 vanligaste kolumnerna i uppgifter och i katalogen. Alla kolumner sparas i Avro-filerna i S3-mellanlagringen, men endast de 500 vanligaste kolumnerna lagras i Iceberg-tabeller. Vid schemautveckling, om en ny kolumn läggs till, kommer den inte att läggas till bland de översta kolumnerna även om den är vanlig.