Dane strumieniowe
Proces wdrażania przesyła dane ze źródła i przechowuje je w tabelach Iceberg. Zmiany ze strumieniowych źródeł danych są w sposób ciągły stosowane do tabel przechowywania w czasie zbliżonym do rzeczywistego.
Wdrażanie danych
Dane są wdrażane w ramach projektu potoku, a zestawy danych są przechowywane w lokalizacji S3 zdefiniowanej w ustawieniach projektu.
-
W swoim projekcie kliknij Utwórz, a następnie Wdróż dane.
-
Dodaj Nazwę zadania i opcjonalny Opis dla wdrażania.
Kliknij Dalej.
-
Wybierz połączenie źródłowe.
Możesz wybrać istniejące połączenie ze źródłem strumieniowym lub utworzyć nowe połączenie ze źródłem.
Więcej informacji zawiera sekcja Łączenie ze strumieniami danych
Kliknij Dalej i postępuj zgodnie z poniższymi instrukcjami dla swojego źródła danych.
Wybieranie danych
Apache Kafka
Lista wyświetla dostępne tematy Kafka z klastra zdefiniowanego w połączeniu źródłowym.
Podczas wybierania tematów możesz wybrać określone zestawy danych. Możesz również użyć reguł wyboru, aby uwzględnić lub wykluczyć grupy zestawów danych:
-
Użyj % jako symbolu wieloznacznego, aby zdefiniować kryteria wyboru dla zestawów danych.
Jeśli tematy są wybierane przy użyciu reguł wyboru, możesz zdecydować, czy załadować wszystkie zestawy danych do tej samej tabeli docelowej, czy utworzyć oddzielną tabelę docelową dla każdego tematu źródłowego:
-
Domyślnie nazwa docelowej tabeli Iceberg pochodzi od nazwy tematu, sformatowanej zgodnie z konwencjami nazewnictwa, na przykład małe litery, usunięte spacje, myślniki zastąpione znakami podkreślenia. W sekcji Zdefiniuj nazwę docelowego zestawu danych możesz edytować nazwę tabeli docelowej
-
Gdy reguły wyboru są używane do ładowania wielu tematów do jednej tabeli, musisz podać nazwę docelową.
-
Gdy używane są reguły wyboru, a dane są ładowane do oddzielnych tabel (jeden zestaw danych na temat), domyślnymi nazwami docelowymi są nazwy tematów. Na tym etapie nie można edytować nazw w kreatorze, ale można to zrobić później w zadaniu umieszczania.
-
Jeśli reguła jest skonfigurowana do wybierania tematów do pozyskiwania, wszelkie nowe tematy spełniające kryteria reguły są również umieszczane, jeśli zaznaczona jest opcja Nowy temat > Dodaj do celu w sekcji ewolucji schematu w ustawieniach zadania umieszczania.
Wybierz jeden lub więcej zestawów danych albo użyj reguły wyboru i kliknij Dodaj. Kliknij Dalej.
Amazon Kinesis
Lista wyświetla dostępne strumienie Kinesis zdefiniowane w połączeniu źródłowym.
Wybierz jeden lub więcej zestawów danych i kliknij Dodaj. Dodane zestawy danych można zobaczyć w sekcji Wybrane strumienie. Kliknij Dalej.
Amazon S3
Przeglądarka katalogów wyświetla listę wszystkich katalogów znajdujących się w zasobniku S3 Twojego połączenia źródłowego.
-
Wybierz katalogi do uwzględnienia podczas umieszczania danych:
-
Dla każdego katalogu w polu Dodaj ścieżkę wprowadź ścieżkę i wzorzec nazwy pliku:
-
Użyj * jako symbolu wieloznacznego, aby dopasować dowolny znak.
-
Aby wprowadzić wzorzec daty, użyj <yyyy> jako czterocyfrowego symbolu zastępczego roku, <MM> jako dwucyfrowego symbolu zastępczego miesiąca, <dd> jako dwucyfrowego symbolu zastępczego dnia i <HH> jako dwucyfrowego symbolu zastępczego godziny. Na przykład:
-
MyDir3/<yyyy>_<MM>_<dd>_<HH>_orders.csv
-
MyDir3/<yyyy>/<MM>/<dd>/<HH>_orders.csv
-
-
-
-
Kliknij Podgląd, aby otworzyć okno dialogowe Podgląd danych. Wyświetlona zostanie lista uwzględnionych i wykluczonych plików.
-
Kliknij Sprawdź poprawność, aby sprawdzić, czy ścieżki i wzorce nazw plików są poprawne i funkcjonalne.
-
W sekcji Zdefiniuj nazwę docelowego zestawu danych podaj nazwę, aby zamapować temat na docelową tabelę Iceberg. Kliknij Dalej.
Wybieranie typu zawartości
Wybierz typ zawartości zdarzeń źródłowych.
-
Wybierz typ pozyskiwanych zdarzeń w sekcji Wybierz typ zdarzeń danych.
-
Więcej informacji zawiera sekcja Łączenie ze strumieniami danych.
Wybrany typ zawartości ma zastosowanie do wszystkich tematów, zestawów danych lub zdarzeń danych. Musisz utworzyć nowe zadanie dla każdego typu zawartości, który chcesz pozyskać.
-
Rozwiń Sprawdź, czy zdarzenia są poprawnie załadowane, aby potwierdzić, że dane mogą zostać przeanalizowane. Warto upewnić się, że dane są poprawne na tym etapie, w przeciwnym razie konieczne będzie ponowne utworzenie potoku i ponowne załadowanie danych. Użyj opcji Wybierz zestaw danych, aby zbadać określone zestawy danych i sprawdzić wszelkie ostrzeżenia, które mogą wpłynąć na ładowanie danych. Kliknij ikonę oka obok dowolnych kolumn struktury, aby wyświetlić dane.
-
Kliknij Dalej.
Ustawianie właściwości pozyskiwania
Skonfiguruj ustawienia dla swojego potoku:
-
Odczytaj dane z
-
Rozpocznij od najwcześniejszego zdarzenia: pozyskaj wszystkie dane historyczne.
-
Rozpocznij od teraz: pozyskaj nowe dane napływające od momentu uruchomienia potoku.
-
-
Rozwijanie kolumn
-
Zachowaj zagnieżdżone kolumny: nie są stosowane żadne przekształcenia.
-
Rozwiń do oddzielnych kolumn: dane są dzielone na oddzielne kolumny.
-
-
Ustawienia ładowania dla nowych zestawów danych
-
Tylko dołączaj: zazwyczaj najlepsza opcja dla danych zdarzeń, ponieważ zwykle mają one krótki cykl życia i nie są aktualizowane, na przykład Zamówienia.
-
Zastosuj zmiany: ta opcja najlepiej nadaje się do danych, które są aktualizowane w czasie, na przykład Klienci. Aktualizuje istniejące rekordy i wstawia nowe rekordy na podstawie pól klucza. Pola klucza trzeba będzie określić później podczas definiowania zadania.
-
-
Partycja tabeli docelowej
Opcja partycji tabeli docelowej ma zastosowanie do wszystkich tabel w potoku. Możesz to później zastąpić na poziomie tabeli, aby zdefiniować niestandardowe partycjonowanie.
InformacjaTa opcja jest dostępna tylko wtedy, gdy w sekcji Ustawienia ładowania wybrano opcję Tylko dołączaj.-
Brak partycji: tabele są tworzone bez żadnego partycjonowania.
-
Partycjonuj według daty pozyskania zdarzenia: tabele są partycjonowane według daty pozyskania zdarzeń.
InformacjaGdy ta opcja jest wybrana razem z opcją kolumny nagłówka hdr__from_timestamp, hdr__from_timestamp zostanie użyta jako domyślna kolumna partycji. Informacje na temat dodawania kolumny nagłówka hdr__from_timestamp do widoków standardowych zawiera sekcja Definicje tabel.
-
-
Obsługa zmian danych
InformacjaTa opcja jest dostępna tylko wtedy, gdy w sekcji Ustawienia ładowania wybrano opcję Zastosuj zmiany.-
Uwzględnij miękkie usunięcia: Wprowadź wyrażenie, aby zdefiniować, które rekordy mają zostać oznaczone do usunięcia.
-
Utwórz magazyn danych historycznych (Typ 2): Spowoduje to zachowanie poprzednich wersji zmienionych rekordów.
-
-
Kliknij Dalej.
Podsumowanie
Ekran podsumowania zapewnia wizualną reprezentację Twojego potoku:
-
Opcjonalnie dla zadania umieszczania strumieniowego i przekształcania strumieniowego możesz kliknąć Edytuj nazwę i opis, aby podać nowe wartości.
-
Wybierz opcję określającą, co ma się stać Po utworzeniu potoku.
-
Po skonfigurowaniu wszystkich ustawień kliknij Utwórz, aby utworzyć potok strumieniowy.
-
Po wyświetleniu projektu możesz przygotować i uruchomić każde zadanie, aby rozpocząć pozyskiwanie danych.
-
Przygotuj i uruchom zadanie umieszczania strumieniowego.
Więcej informacji zawiera sekcja Umieszczanie danych strumieniowych w Qlik Open Lakehouse.
-
Przygotuj i uruchom zadanie przekształcania strumieniowego.
Więcej informacji zawiera sekcja Przechowywanie strumieniowych zestawów danych.
-
Mapowania typów danych
Początkowy schemat źródłowy opiera się na próbce danych pobranej przed fazą PRZYGOTOWANIA podczas tworzenia projektu potoku, a ewolucja schematu jest obsługiwana w czasie odczytu. Zadania lustrzane i inne zadania podrzędne, które nie obsługują typów STRUCT i ARRAY, używają typu JSON. Dane można analizować za pomocą języka SQL.
Poniższe mapowania typów danych mają zastosowanie do wszystkich obsługiwanych źródeł danych, ale różnią się w zależności od typu pliku źródłowego. Należy zwrócić uwagę na następujące kwestie:
-
Typy danych są wnioskowane z próbki wdrażanych danych. Na przykład, jeśli pole zawiera tylko wartości całkowite w próbce, jest tworzone jako INT8 w zadaniach umieszczania strumieniowego i przekształcania. Jeśli kolejne dane zawierają wartości ułamkowe podwójnej precyzji, pliki umieszczania zawierają te wartości; jednak w zadaniu przekształcania strumieniowego, jeśli ustawienie Zmień typ danych pola jest ustawione na Ignoruj, kolumna pozostaje jako INT8, a wartości ułamkowe są obcinane. Aby uniknąć niezamierzonego obcięcia, upewnij się, że dane przykładowe obejmują pełny zakres oczekiwanych wartości przed wdrożeniem, lub skonfiguruj opcję Zmień typ danych pola na Zatrzymaj zadanie na wczesnych etapach i dostosuj typy danych w razie potrzeby.
-
Jeśli pole zostanie dodane do struktury w źródle, jest ono zawsze dodawane do celu umieszczania. W przypadku przekształcania strumieniowego zachowanie jest stosowane zgodnie z opcją wybraną w sekcji Ustawienia zadania przekształcania strumieniowego > Ewolucja schematu > Dodaj pola do struktury (Zastosuj do celu, Ignoruj, Zatrzymaj zadanie).
-
Jeśli w określonym rekordzie brakuje pola lub tablica jest pusta, są one traktowane jako null.
-
Jeśli zestaw danych jest spłaszczany przez tablicę, a nadejdzie rekord, w którym ta tablica jest pusta lub ma wartość null, system tworzy jeden wiersz, a spłaszczone pole ma wartość null. Nie jest to automatycznie wykluczane. Jeśli chcesz wykluczyć te wiersze, ręcznie dodaj filtr, na przykład array_element IS NOT NULL.
-
Typy danych wyświetlane w interfejsie użytkownika odzwierciedlają wybraną szczegółowość zestawu danych. W przypadku spłaszczonych tablic wyświetlany jest typ danych pojedynczego elementu, a nie sama struktura tablicy.
-
Nowego atrybutu nie można dodać wewnątrz struktury w zagnieżdżonym polu JSON, a jedynie na poziomie głównym.
-
W zadaniach przekształcania strumieniowego spłaszczanie jest obsługiwane tylko dla jednego poziomu tablicy. Gdy spłaszczanie jest stosowane do tablicy wielopoziomowej, na przykład ARRAY<ARRAY<STRUCT>>, spłaszczana jest tylko zewnętrzna tablica, co daje w wyniku ARRAY<STRUCT>, a nie w pełni spłaszczoną strukturę STRUCT. Ponadto obecny interfejs użytkownika pozwala na konfigurowanie spłaszczania tylko na poziomie kolumny. W rezultacie wybranie tablicy wielopoziomowej niejawnie stosuje spłaszczanie tylko do pierwszego poziomu tablicy.
-
Gdy odwołujesz się do tablicy typów prostych, używany jest typ danych elementu, jeśli szczegółowością jest tablica. W przeciwnym razie używany jest typ danych tablicy.
W tym przykładzie OrderDetails ma tablicę CustomerID o typie danych INT. OrderDetails.CustomerID oznacza INT, jeśli szczegółowością jest OrderDetails.CustomerID, oraz ARRAY<INT>, jeśli szczegółowością jest OrderDetails.
JSON
W plikach JSON wartość liczbowa w źródle określa docelowy typ danych:
-
INT8 jest używany dla wartości całkowitych, które mieszczą się w obsługiwanym zakresie liczb całkowitych i nie zawierają części ułamkowej.
-
REAL8 (DOUBLE) jest używany, gdy wartość zawiera część ułamkową (liczba zmiennoprzecinkowa).
-
STRING jest używany, gdy wartość liczbowa przekracza maksymalny obsługiwany zakres liczb całkowitych.
Typy danych są mapowane w następujący sposób:
| Źródłowe typy danych | Typy danych Qlik Talend Data Integration |
|---|---|
| STRING | STRING |
| NUMBER | INT8 |
| NUMBER | REAL8 |
| NUMBER | STRING |
| BOOLEAN | BOOLEAN |
| ARRAY | ARRAY |
| OBJECT | STRUCT |
CSV, TSV, REGEX i SPLIT
Domyślnie wszystkie źródłowe typy danych są pozyskiwane jako ciąg znaków. Użyj opcji Automatycznie wnioskuj typy, aby zamapować typy źródłowe i docelowe w następujący sposób:
| Źródłowe typy danych | Typy danych Qlik |
|---|---|
| NUMERIC | INT8/REAL8 |
| True/TRUE/true/False/FALSE/false | BOOLEAN |
| TIMESTAMP | Znaczniki czasu w formacie yyyy-MM-dd HH:mm:ss lub yyyy-MM-ddTHH:mm:ssz są analizowane do typu datetime. Jeśli uwzględniono strefę czasową, wartość jest analizowana jako ciąg znaków. |
Parquet
Pliki Parquet obsługują fizyczne i logiczne typy danych. Fizyczne typy danych określają, w jaki sposób wartości są przechowywane na dysku, na przykład INT32, DOUBLE lub BYTE_ARRAY. Logiczne typy danych nadają znaczenie semantyczne reprezentacji fizycznej, na przykład identyfikując, czy wartość całkowita reprezentuje datę. Gdy typ logiczny jest dołączony do kolumny Parquet i jest obsługiwany w Qlik Open Lakehouse (jak wymieniono poniżej), zadanie umieszczania strumieniowego używa typu logicznego podczas definiowania schematu docelowego, a nie podstawowego typu fizycznego. Zapewnia to prawidłową interpretację danych, zachowuje zamierzoną semantykę, taką jak precyzja, skala i znaczenie czasowe, a także skutkuje dokładniejszymi schematami, gdy dane są zapisywane w formatach podrzędnych.
Dane pochodzące z plików Parquet są mapowane w następujący sposób:
| Źródłowe typy danych | Typy logiczne | Typy danych Qlik Talend Data Integration |
|---|---|---|
| BOOLEAN | BOOLEAN | |
| INT32 | INT8 | |
| INT64 | INT8 | |
| INT96 | DATETIME | |
| FLOAT | REAL8 | |
| DOUBLE | REAL8 | |
| BYTE_ARRAY | STRING (zakodowane jako Base64) | |
| FIXED_LEN_BYTE_ARRAY | STRING (zakodowane jako Base64) | |
| BYTE_ARRAY | STRING | STRING |
| BYTE_ARRAY | ENUM | STRING |
| INT32 | DECIMAL | INT8 |
| INT64 | DECIMAL | INT8 |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | INT8/REAL8 (zakodowane jako Base64) |
| BYTE_ARRAY | DECIMAL | INT8/REAL8 (zakodowane jako 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>. Tablica struktur reprezentujących pary klucz-wartość. |
Avro
Poniższe mapowania mają zastosowanie do plików Avro z rejestrem schematów.
| Źródłowe typy danych | Typy logiczne | Typy danych Qlik Talend Data Integration |
|---|---|---|
| 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
Poniższe mapowania mają zastosowanie do plików ORC.
| Źródłowe typy danych | Typy danych Qlik Talend Data Integration |
|---|---|
| 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>. Tablica struktur reprezentujących pary klucz-wartość. |
| STRUCT | STRUCT |
| UNION |
Ograniczenia i uwagi
-
Jeśli struktura lub tablica zostanie zmodyfikowana przez automatyczną ewolucję schematu w umieszczaniu, widoki podrzędne, które nie zostały utworzone przez zadanie strumieniowe Qlik Talend Cloud, mogą wymagać aktualizacji, aby nie były nieaktualne.
-
Jeśli zadanie ma błędy analizy, nie przejdzie w stan błędu i nie zostanie oznaczone jako wymagające uwagi. Ponieważ błędy analizy są stale rosnącą metryką, nie ma kryterium wyjścia dla stanu błędu.
-
Usunięcie możliwości klastra jest dozwolone tylko wtedy, gdy nie ma zadań korzystających z tej możliwości.
-
Aktualizacje i usunięcia rekordu z tym samym kluczem podstawowym nie mogą przekraczać granicy partycji, to znaczy muszą być zamapowane na tę samą partycję.
-
Jeśli źródło zawiera dużą liczbę kolumn, w zadaniach i w katalogu wyświetlanych jest tylko 500 najczęstszych kolumn. Wszystkie kolumny są zapisywane w plikach Avro w umieszczaniu S3, ale tylko 500 najlepszych kolumn jest przechowywanych w tabelach Iceberg. W ewolucji schematu, jeśli zostanie dodana nowa kolumna, nie zostanie ona dodana do najlepszych kolumn, nawet jeśli występuje często.