Gå till huvudinnehåll Gå till ytterligare innehåll

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.

  1. I projektet klickar du på Skapa och sedan på Introducera data.

  2. Lägg till ett Uppgiftsnamn och en valfri Beskrivning för introduktionen.

    Klicka på Nästa.

  3. 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. 

Anteckning om informationAtt använda ett datamönster för att välja kataloger kan förbättra prestandan.
  • 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.

Anteckning om informationOm inga händelser upptäcktes för datauppsättningen visas ett meddelande i mellanlagringen. Du måste köra uppgiften när det finns händelser att läsa, och kolumnerna läggs till automatiskt.

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.

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.

Var den här sidan till hjälp för dig?

Om du stöter på några problem med den här sidan eller innehållet på den, t.ex. ett stavfel, ett saknat steg eller ett tekniskt fel – meddela oss!