Strömmande data
Onboarding-processen ö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ästan realtid.
Onboarda data
Data onboardas inom ett pipeline-projekt och datauppsättningar lagras på den S3-plats som definierats i projektinställningarna.
-
I ditt projekt klickar du på Skapa och sedan på Onboarda data.
-
Lägg till ett Uppgiftsnamn och en valfri Beskrivning för onboarding.
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 instruktionerna 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 ett jokertecken för att definiera urvalskriterier för datauppsättningarna.
Om ämnen väljs med hjälp av urvalsregler kan du välja om du vill ladda alla datauppsättningar i samma måltabell eller skapa en separat måltabell för varje källämne:
-
Som standard härleds namnet på Iceberg-måltabellen från ämnesnamnet, formaterat för att följa namnkonventioner, till exempel gemener, borttagna mellanslag, bindestreck ersatta med understreck. I Definiera måldatauppsättningens namn kan du redigera namnet på måltabellen
-
När urvalsregler används för att ladda flera ämnen i en enda tabell måste du ange målnamnet.
-
När urvalsregler används och data laddas 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 inläsning, mellanlagras även alla 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-bucketen för din källkoppling.
-
Välj de kataloger som ska inkluderas vid mellanlagring av data:
-
För varje katalog, i Lägg till sökväg, anger du sökvägen och filnamnsmönstret:
-
Använd * som ett jokertecken för att matcha valfritt tecken.
-
För att ange ett datummönster använder du <yyyy> som platshållare för fyrsiffrigt år, <MM> som platshållare för tvåsiffrig månad, <dd> som platshållare för tvåsiffrig dag och <HH> som platshållare för tvåsiffrig timme. Till 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 fungerar.
-
I Definiera måldatauppsättningens namn anger du ett namn för att mappa ämnet till Iceberg-måltabellen. Klicka på Nästa.
Välja innehållstyp
Välj innehållstyp för källhändelserna.
-
Välj den typ av händelser du läser 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 läsa in.
-
Expandera Verifiera att händelserna har laddats korrekt för att bekräfta att data kan tolkas. Det är en bra idé att säkerställa att data är korrekta i det här skedet, annars måste du återskapa pipelinen och ladda data igen. Använd Välj datauppsättning för att undersöka specifika datauppsättningar och kontrollera eventuella varningar som kan påverka laddningen av data. Klicka på ögonikonen bredvid eventuella struct-kolumner för att visa data.
-
Klicka på Nästa.
Ställa in inläsningsegenskaper
Konfigurera inställningarna för din pipeline:
-
Läs data från
-
Starta från den tidigaste händelsen: läs in alla historiska data.
-
Starta från nu: läs in nya data som anländer från den tidpunkt då pipelinen startar.
-
-
Nästla upp kolumn
-
Bevara nästlade kolumner: inga transformationer tillämpas.
-
Nästla upp i separata kolumner: data delas upp i separata kolumner.
-
-
Laddningsinställningar för nya datauppsättningar
-
Endast tillägg: i allmänhet det bästa alternativet för händelsedata eftersom de vanligtvis har en kort livslängd och inte uppdateras, till exempel Ordrar.
-
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 måste ange nyckelfälten senare när du definierar uppgiften.
-
-
Måltabellspartition
Alternativet för måltabellspartition gäller för 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 tillägg har valts i Laddningsinställningar.-
Ingen partition: tabeller skapas utan någon partitionering.
-
Partitionera efter inläsningsdatum för händelse: tabeller partitioneras efter det datum då händelser läses in.
Anteckning om informationNär det här alternativet väljs tillsammans med alternativet för rubrikkolumnen hdr__from_timestamp, kommer hdr__from_timestamp att användas som standardpartitionskolumn. För information om hur du lägger till rubrikkolumnen hdr__from_timestamp i standardvyer, se Tabelldefinitioner.
-
-
Hantering av dataändringar
Anteckning om informationDet här alternativet är endast tillgängligt när Tillämpa ändringar har valts i Laddningsinstä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 behåller tidigare versioner av ändrade poster.
-
-
Klicka på Nästa.
Sammanfattning
Sammanfattningsskärmen ger en visuell presentation av din pipeline:
-
För uppgifterna Strömmande mellanlagring och Strömmande transformering kan du valfritt 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 läsa in data.
-
Förbered och kör uppgiften Strömmande mellanlagring.
Mer information finns i Mellanlagra strömmande data till Qlik Open Lakehouse.
-
Förbered och kör uppgiften Strömmande transformering.
Mer information finns i Lagra strömmande dataset.
-
Mappningar av datatyper
Det initiala källschemat baseras på ett urval av data som tagits före PREPARE-fasen när du skapar ditt pipeline-projekt, 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 tolkas med SQL.
Följande datatypsmappningar gäller för alla datakällor som stöds, men varierar beroende på källfilstyp, och följande bör noteras:
-
Datatyper härleds från ett urval av de data som onboardas. Om ett fält till exempel bara innehåller heltalsvärden i urvalet skapas det som INT8 i uppgifterna för strömmande mellanlagring och transformering. Om efterföljande data inkluderar bråkvärden med dubbel precision innehåller mellanlagringsfilerna dessa värden; men i uppgiften Strömmande transformering, om inställningen Ändra fältdatatyp är inställd på Ignorera, förblir kolumnen INT8 och bråkvärdena trunkeras. För att undvika oavsiktlig trunkering bör du se till att exempeldata inkluderar hela intervallet av förväntade värden före onboarding, eller konfigurera Ändra fältdatatyp till Stoppa uppgift under tidiga skeden och justera datatyper efter behov.
-
Om ett fält läggs till i en struct i källan läggs det alltid till i 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 datauppsättning 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. Den utesluts inte automatiskt. Om du vill utesluta dessa rader lägger du manuellt till ett filter, till exempel array_element IS NOT NULL.
-
De datatyper som visas i användargränssnittet återspeglar den valda datauppsättningens granularitet. För utplattade arrayer visas datatypen för det enskilda elementet snarare än själva arraystrukturen.
-
Ett nytt attribut kan inte läggas till inuti en struct i ett nästlat 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 endast konfigureras på kolumnnivå. Som ett resultat tillämpar valet av en flernivåarray implicit utplattning endast på den första arraynivån.
-
När du refererar till en array av primitiver används elementets datatyp om granulariteten är arrayen. Annars används arrayens datatyp.
I det här exemplet har OrderDetails en array av 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 stödda heltalsintervallet och inte inkluderar en bråkdel.
-
REAL8 (DOUBLE) används när värdet innehåller en bråkdel (flyttal).
-
STRING används när det numeriska värdet överskrider det maximala stödda heltalsintervallet.
Datatyper mappas enligt följande:
| Källdatatyper | Qlik Talend Data Integration-datatyper |
|---|---|
| STRING | STRING |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX och SPLIT
Som standard läses alla källdatatyper in till en sträng. Använd alternativet Härled typer automatiskt för att mappa käll- och måltyper enligt följande:
| Källdatatyper | Qlik-datatyper |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | Tidsmarkörer i formatet yyyy-MM-dd HH:mm:ss eller yyyy-MM-ddTHH:mm:ssz tolkas till en datetime-typ. Om en tidszon inkluderas tolkas 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 betydelse ovanpå den fysiska representationen, till exempel för 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 (enligt listan nedan), använder uppgiften Strömmande mellanlagring 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 | STRING (kodad som Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (kodad som Base64) | |
| BYTE_ARRAY | STRING | STRING |
| BYTE_ARRAY | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | 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 |
| NESTED TYPES | STRUCT | |
| LIST | ARRAY | |
| MAP | ARRAY<STRUCT>. Array av structs som representerar nyckel-värdepar. |
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 | |
| 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
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 |
| LIST | ARRAY |
| MAP | ARRAY<STRUCT>. Array av structs som representerar nyckel-värdepar. |
| STRUCT | STRUCT |
| UNION |
Begränsningar och överväganden
-
Om en struktur eller array ändras av automatisk schemautveckling i mellanlagringen kan nedströmsvyer som inte skapades av en strömmande Qlik Talend Cloud-uppgift behöva uppdateras för att inte bli inaktuella.
-
Om en uppgift har tolkningsfel kommer den inte att hamna i ett feltillstånd och kommer inte att markeras som att den kräver uppmärksamhet. Eftersom tolkningsfel är ett ständigt ökande mätvärde 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 översta kolumnerna lagras i Iceberg-tabeller. I schemautveckling, om en ny kolumn läggs till, kommer den inte att läggas till i de översta kolumnerna även om den är vanlig.