Strömmande data | Qlik CloudHjälp
Gå till huvudinnehåll Gå till ytterligare innehåll

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.

  1. I ditt projekt klickar du på Skapa och sedan på Onboarda data.

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

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

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

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

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.

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!