Streaminggegevens
Het onboardingproces draagt gegevens over van de bron en slaat deze op in Iceberg-tabellen. Wijzigingen van de streaminggegevensbronnen worden continu toegepast op de opslagtabellen in bijna realtime.
Gegevens vrijgeven
Gegevens worden onboarded binnen een pijplijnproject en datasets worden opgeslagen op de S3-locatie die is gedefinieerd in de projectinstellingen.
-
Klik in uw project op Maken en vervolgens op Gegevens onboarden.
-
Voeg een Taaknaam en optionele Beschrijving toe voor het onboarden.
Klik op Volgende.
-
Selecteer de bronverbinding.
U kunt een bestaande streaming-bronverbinding selecteren of een nieuwe verbinding met de bron maken.
Ga voor meer informatie naar Verbinding maken met datastreams.
Klik op Volgende en volg de onderstaande instructies voor uw gegevensbron.
Gegevens selecteren
Apache Kafka
De lijst toont de beschikbare Kafka-onderwerpen van het cluster dat is gedefinieerd in de bronverbinding.
Wanneer u uw onderwerpen selecteert, kunt u specifieke gegevensverzamelingen selecteren. U kunt ook selectieregels gebruiken om groepen gegevensverzamelingen op te nemen of uit te sluiten:
-
Gebruik % als jokerteken om selectiecriteria te definiëren voor de datasets.
Als onderwerpen worden geselecteerd met behulp van selectieregels, kunt u kiezen of u alle datasets in dezelfde doeltabel wilt laden of een afzonderlijke doeltabel wilt maken voor elk brononderwerp:
-
Standaard wordt de naam van de doel-Iceberg-tabel afgeleid van de onderwerpnaam, geformatteerd om te voldoen aan naamgevingsconventies, bijvoorbeeld kleine letters, spaties verwijderd, streepjes vervangen door underscores. In Doeldatasetnaam definiëren kunt u de naam van de doeltabel bewerken
-
Wanneer selectieregels worden gebruikt om meerdere onderwerpen in één tabel te laden, moet u de doelnaam opgeven.
-
Wanneer selectieregels worden gebruikt en de gegevens in afzonderlijke tabellen (één dataset per onderwerp) worden geladen, zijn de standaarddoelnamen de onderwerpsnamen. In dit stadium kunt u de namen in de wizard niet bewerken, maar dit kan later in de tussenopslagtaak worden gedaan.
-
Als een regel is geconfigureerd om onderwerpen voor opname te selecteren, worden alle nieuwe onderwerpen die aan de regelcriteria voldoen ook in de tussenopslag geplaatst als de optie Nieuw onderwerp > Toevoegen aan doel onder schema-evolutie in de instellingen van de tussenopslagtaak is aangevinkt.
Selecteer een of meer gegevensverzamelingen, of gebruik een selectieregel, en klik op Toevoegen. Klik op Volgende.
Amazon Kinesis
De lijst toont de beschikbare Kinesis-streams die zijn gedefinieerd in de bronverbinding.
Selecteer een of meer datasets en klik op Toevoegen. U kunt de toegevoegde datasets bekijken onder Geselecteerde streams. Klik op Volgende.
Amazon S3
De mappenbrowser geeft een lijst weer van alle mappen die zich bevinden in de S3-bucket van uw bronverbinding.
-
Selecteer welke mappen u wilt opnemen bij het tijdelijk opslaan van gegevens:
-
Voer voor elke map, in Pad toevoegen, het pad en het bestandsnaam-patroon in:
-
Gebruik * als een jokerteken om elk teken te matchen.
-
Als u een datumpatroon wilt invoeren, gebruikt u <yyyy> als de tijdelijke aanduiding voor het viercijferige jaar, <MM> als de tijdelijke aanduiding voor de tweecijferige maand, <dd> als de tijdelijke aanduiding voor de tweecijferige dag en <HH> als de tijdelijke aanduiding voor het tweecijferige uur. Bijvoorbeeld:
-
MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv
-
MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv
-
-
-
-
Klik op Voorbeeld om het dialoogvenster Voorbeeldgegevens te openen. Een lijst met opgenomen en uitgesloten bestanden wordt weergegeven.
-
Klik op Validate om te controleren of de paden en de bestandsnaampatronen correct en functioneel zijn.
-
Geef in Doeldatasetnaam definiëren een naam op om het onderwerp toe te wijzen aan de doel-Iceberg-tabel. Klik op Volgende.
Het inhoudstype selecteren
Kies het inhoudstype van brongebeurtenissen.
-
Selecteer het type gebeurtenissen dat u opneemt in Kies het type gegevensgebeurtenissen.
-
Ga voor meer informatie naar Verbinding maken met datastreams.
Het geselecteerde inhoudstype is van toepassing op alle onderwerpen, datasets of gegevensgebeurtenissen. U moet een nieuwe taak maken voor elk inhoudstype dat u wilt opnemen.
-
Vouw Controleer of de gebeurtenissen correct zijn geladen uit om te bevestigen dat de gegevens kunnen worden geparseerd. Het is raadzaam om ervoor te zorgen dat de gegevens in dit stadium correct zijn, anders moet u de pijplijn opnieuw maken en de gegevens opnieuw laden. Gebruik Dataset selecteren om specifieke datasets te onderzoeken en eventuele waarschuwingen te controleren die van invloed kunnen zijn op het laden van de gegevens. Klik op het oogpictogram naast structuurkolommen om de gegevens te bekijken.
-
Klik op Volgende.
Opname-eigenschappen instellen
Configureer de instellingen voor uw pijplijn:
-
Gegevens lezen vanuit
-
Begin bij de vroegste gebeurtenis: alle historische gegevens opnemen.
-
Begin nu: nieuwe gegevens opnemen die binnenkomen vanaf het moment dat de pijplijn start.
-
-
Kolom unnesten
-
Geneste kolommen behouden: er worden geen transformaties toegepast.
-
Opsplitsen in afzonderlijke kolommen: gegevens worden gesplitst in afzonderlijke kolommen.
-
-
Laadinstellingen voor nieuwe gegevensverzamelingen
-
Alleen toevoegen: over het algemeen de beste optie voor gebeurtenisgegevens, aangezien deze meestal een korte levensduur hebben en niet worden bijgewerkt, bijvoorbeeld Orders.
-
Wijzigingen toepassen: dit is het meest geschikt voor gegevens die in de loop van de tijd worden bijgewerkt, bijvoorbeeld Klanten. Werkt bestaande records bij en voegt nieuwe records in op basis van sleutelvelden. U moet de sleutelvelden later opgeven wanneer u de taak definieert.
-
-
Doeltabelpartitie
De partitieoptie voor de doeltabel is van toepassing op alle tabellen in de pijplijn. U kunt dit later op tabelniveau overschrijven om aangepaste partitionering te definiëren.
InformatieDeze optie is alleen beschikbaar wanneer Alleen toevoegen is geselecteerd in Laadinstellingen.-
Geen partitie: tabellen worden gemaakt zonder partities.
-
Partitie op basis van opnamedatum van gebeurtenis: tabellen worden gepartitioneerd op basis van de datum dat gebeurtenissen zijn opgenomen.
-
-
Verwerking van gegevenswijziging
InformatieDeze optie is alleen beschikbaar wanneer Wijzigingen toepassen is geselecteerd in Laadinstellingen.-
Zachte verwijderingen opnemen: Voer een expressie in om te definiëren welke records moeten worden gemarkeerd voor verwijdering.
-
Een historische gegevensopslag maken (Type 2): Hiermee worden eerdere versies van gewijzigde records bewaard.
-
-
Klik op Volgende.
Overzicht
Het overzichtsscherm biedt een visuele weergave van uw pijplijn:
-
Optioneel kunt u voor de Streaming-tussenopslag- en Streaming-transformatie-taak klikken op Naam en beschrijving bewerken om nieuwe waarden op te geven.
-
Selecteer de optie voor wat u wilt dat er gebeurt Nadat de pijplijn is gemaakt.
-
Wanneer u alle instellingen hebt geconfigureerd, klikt u op Maken om de streaming pijplijn te maken.
-
Wanneer het project wordt weergegeven, kunt u elke taak voorbereiden en uitvoeren om te beginnen met het opnemen van de gegevens.
-
Bereid de Streaming tussenopslagtaak voor en voer deze uit.
Ga voor meer informatie naar Streaminggegevens tijdelijk opslaan in Qlik Open Lakehouse.
-
Bereid de Streaming Transform-taak voor en voer deze uit.
Ga voor meer informatie naar Streaming gegevensverzamelingen opslaan.
-
Toewijzingen van gegevenstypen
Het initiële bronschema is gebaseerd op een steekproef van de gegevens die vóór de PREPARE-fase is genomen bij het maken van uw pijplijnproject, en schema-evolutie wordt afgehandeld tijdens het lezen. Spiegeltaken en andere downstream-taken die STRUCT en ARRAY niet ondersteunen, gebruiken een JSON-type. Gegevens kunnen worden geparseerd met SQL.
De volgende toewijzingen van gegevenstypen zijn van toepassing op alle ondersteunde gegevensbronnen, maar variëren afhankelijk van het type bronbestand, en het volgende moet worden opgemerkt:
-
Gegevenstypen worden afgeleid uit een voorbeeld van de gegevens die worden ingeladen. Als een veld bijvoorbeeld alleen gehele getallen bevat in het voorbeeld, wordt het gemaakt als INT8 in de streaming tussenopslag- en transformatietaken. Als latere gegevens dubbele-precisie fractionele waarden bevatten, bevatten de tussenopslagbestanden die waarden; echter, in de Streaming transformatietaak, als de instelling Gegevenstype veld wijzigen is ingesteld op Negeren, blijft de kolom INT8 en worden de fractionele waarden afgekapt. Om onbedoelde afkapping te voorkomen, moet u ervoor zorgen dat de voorbeeldgegevens het volledige bereik van verwachte waarden bevatten voordat u ze onboardt, of configureer Gegevenstype veld wijzigen naar Taak stoppen tijdens de vroege stadia en pas de gegevenstypen indien nodig aan.
-
Als een veld wordt toegevoegd aan een struct in de bron, wordt het altijd toegevoegd aan de tussenopslagdoel. Voor streamingtransformatie wordt het gedrag toegepast volgens de optie die is gekozen in Instellingen streamingtransformatie > Schema-evolutie > Velden toevoegen aan struct (Toepassen op doel, Negeren, Taak stoppen).
-
Als een veld ontbreekt in een specifiek record, of een array leeg is, worden ze behandeld als null.
-
Als een dataset wordt afgevlakt door een array, en er komt een record binnen waarbij die array leeg of null is, maakt het systeem één rij aan en is het afgevlakte veld null. Het wordt niet automatisch uitgesloten. Als u deze rijen wilt uitsluiten, voegt u handmatig een filter toe, bijvoorbeeld, array_element IS NOT NULL.
-
De gegevenstypen die in de gebruikersinterface worden weergegeven, weerspiegelen de granulariteit van de geselecteerde gegevensverzameling. Voor platgemaakte reeksen wordt het gegevenstype van het afzonderlijke element getoond, in plaats van de reeksstructuur zelf.
-
Een nieuw kenmerk kan niet worden toegevoegd binnen een structuur in een genest JSON-veld, alleen op het hoofdniveau.
-
In streaming transformatietaken wordt afvlakking alleen ondersteund voor één niveau van een array. Wanneer afvlakken wordt toegepast op een array met meerdere niveaus, bijvoorbeeld ARRAY<ARRAY<STRUCT>>, wordt alleen de buitenste array afgevlakt, wat resulteert in ARRAY<STRUCT> in plaats van een volledig afgevlakte STRUCT. Bovendien kan de huidige gebruikersinterface afvlakking alleen op kolomniveau configureren. Als gevolg hiervan past het selecteren van een array met meerdere niveaus impliciet afvlakking toe op alleen het eerste arrayniveau.
-
Wanneer u verwijst naar een array van primitieven, wordt het gegevenstype van het element gebruikt als de granulariteit de array is. Anders wordt het array-gegevenstype gebruikt.
In dit voorbeeld heeft OrderDetails een array van CustomerID van het gegevenstype INT. OrderDetails.CustomerID betekent INT als de granulariteit OrderDetails.CustomerID is en ARRAY<INT> als de granulariteit OrderDetails is.
JSON
In JSON-bestanden bepaalt de numerieke waarde in de bron het doelgegevenstype:
-
INT8 wordt gebruikt voor gehele getallen die binnen het ondersteunde gehele getallenbereik passen en geen fractioneel deel bevatten.
-
REAL8 (DOUBLE) wordt gebruikt wanneer de waarde een fractioneel deel (zwevendekommagetal) bevat.
-
STRING wordt gebruikt wanneer de numerieke waarde het maximaal ondersteunde gehele getallenbereik overschrijdt.
Gegevenstypen worden als volgt toegewezen:
| Brongegevenstypen | Qlik Talend Data Integration gegevenstypen |
|---|---|
| TEKENREEKS | TEKENREEKS |
| Getal | INT8 |
| Getal | REAL8 |
| Getal | TEKENREEKS |
| BOOLEAANSE WAARDE | BOOLEAANSE WAARDE |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX en SPLIT
Standaard worden alle brondatatypen opgenomen als een tekenreeks. Gebruik de optie, Typen automatisch afleiden, om bron- en doeltypen als volgt toe te wijzen:
| Brongegevenstypen | Qlik gegevenstypen |
|---|---|
| NUMERIEK | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAANSE WAARDE |
| TIMESTAMP | Tijdstempels in de indeling yyyy-MM-dd HH:mm:ss of yyyy-MM-ddTHH:mm:ssz worden geparseerd naar een datum/tijd-type. Als een tijdzone is opgenomen, wordt de waarde geparseerd als een string. |
Parquet
Parquet-bestanden ondersteunen fysieke en logische gegevenstypen. Fysieke gegevenstypen definiëren hoe waarden op schijf worden opgeslagen, zoals INT32, DOUBLE of BYTE_ARRAY. Logische gegevenstypen bieden semantische betekenis bovenop de fysieke representatie, bijvoorbeeld door te identificeren of een geheel getal een datum vertegenwoordigt. Wanneer een logisch type is gekoppeld aan een Parquet-kolom en wordt ondersteund in Qlik Open Lakehouse (zoals hieronder vermeld), gebruikt de Streaming tussenopslagtaak het logische type bij het definiëren van het doelschema, in plaats van het onderliggende fysieke type. Dit zorgt ervoor dat gegevens correct worden geïnterpreteerd, de beoogde semantiek, zoals precisie, schaal en temporele betekenis, behoudt en resulteert in nauwkeurigere schema's wanneer gegevens naar downstream-indelingen worden geschreven.
Gegevens afkomstig uit Parquet-bestanden worden als volgt toegewezen:
| Brongegevenstypen | Logische typen | Qlik Talend Data Integration gegevenstypen |
|---|---|---|
| BOOLEAANSE WAARDE | BOOLEAANSE WAARDE | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTE_ARRAY | STRING (Gecodeerd als Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (Gecodeerd als Base64) | |
| BYTE_ARRAY | TEKENREEKS | TEKENREEKS |
| BYTE_ARRAY | ENUM | TEKENREEKS |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | INT8/REAL8 (Gecodeerd als Base64) |
| BYTE_ARRAY | DECIMAL | INT8/REAL8 (Gecodeerd als Base64) |
| INT32 | DATUM | DATUM |
| INT32 | TIME(MILLIS,true) | INT8 |
| INT64 | TIME(MICROS,true) | TIJD |
| INT64 | TIMESTAMP(MICROS,true) | DATETIME |
| INT64 | TIMESTAMP(MILLIS,true) | DATETIME |
| GENESTE TYPEN | STRUCT | |
| LIJST | ARRAY | |
| MAP | ARRAY<STRUCT>. Array van structs die sleutel-waardeparen vertegenwoordigen. |
Avro
De volgende toewijzingen gelden voor Avro-bestanden met schema registry.
| Brongegevenstypen | Logische typen | Qlik Talend Data Integration gegevenstypen |
|---|---|---|
| BOOLEAANSE WAARDE | BOOLEAANSE WAARDE | |
| INT | INT8 | |
| LONG | INT8 | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTES | TEKENREEKS | |
| TEKENREEKS | TEKENREEKS | |
| RECORD | STRUCT | |
| ENUM | TEKENREEKS | |
| ARRAY | ARRAY | |
| MAP | ARRAY<STRUCT> | |
| UNION | ||
| VAST | TEKENREEKS | |
| BYTES | DECIMAL | DECIMAL |
| VAST | DECIMAL | DECIMAL |
| INT | DATUM | DATUM |
| INT | TIME-MILLIS | INT8 |
| INT | TIME-MICROS | TIJD |
| LONG | TIMESTAMP-MILLIS | DATETIME |
| LONG | TIMESTAMP-MICROS | DATETIME |
ORC
De volgende toewijzingen zijn van toepassing op ORC-bestanden.
| Brongegevenstypen | Qlik Talend Data Integration gegevenstypen |
|---|---|
| BOOLEAANSE WAARDE | BOOLEAANSE WAARDE |
| BYTE | INT8 |
| SHORT | INT8 |
| INT | INT8 |
| LONG | INT8 |
| DATUM | DATUM |
| FLOAT | REAL8 |
| DOUBLE | REAL8 |
| TIMESTAMP | DATETIME |
| BINARY | TEKENREEKS |
| DECIMAL | REAL8 |
| TEKENREEKS | TEKENREEKS |
| VARCHAR | TEKENREEKS |
| CHAR | TEKENREEKS |
| LIJST | ARRAY |
| MAP | ARRAY<STRUCT>. Array van structs die sleutel-waardeparen vertegenwoordigen. |
| STRUCT | STRUCT |
| UNION |
Beperkingen en overwegingen
-
Als een structuur of array wordt gewijzigd door automatische schema-evolutie in de tussenopslag, moeten downstreamweergaven die niet zijn gemaakt door een Qlik Talend Cloud streamingtaak mogelijk worden bijgewerkt om niet verouderd te raken.
-
Als een taak parseringsfouten heeft, komt deze niet in een foutstatus terecht en wordt deze niet gemarkeerd als 'aandacht vereist'. Aangezien parseringsfouten een altijd toenemende meting zijn, is er geen exitcriterium voor een foutstatus.
-
Het verwijderen van een clusterfunctionaliteit is alleen toegestaan als er geen taken zijn die die functionaliteit gebruiken.
-
Updates en verwijderingen van een record met dezelfde primaire sleutel mogen de partitiegrens niet overschrijden, dat wil zeggen dat ze aan dezelfde partitie moeten worden toegewezen.
-
Als een bron een groot aantal kolommen bevat, worden alleen de 500 meest voorkomende kolommen weergegeven in taken en in de catalogus. Alle kolommen worden opgeslagen in de Avro-bestanden in S3-tussenopslag, maar alleen de 500 meest voorkomende kolommen worden opgeslagen in Iceberg-tabellen. Bij schema-evolutie, als een nieuwe kolom wordt toegevoegd, wordt deze niet toegevoegd aan de topkolommen, zelfs als deze frequent is.